django_taggitを使用するブログアプリがあります。私のHomePageView
サブクラスArchiveIndexView
とうまくいきます。django_taggitを使用して特定のタグを持つオブジェクトを一覧表示します
私は以下のリンクを使用したいと思います:http://mysite.com/tag/yellow
と私はArchiveIndexView
ジェネリッククラスを使い、tag_slugでフィルターをかける変更されたクエリーセットを渡したいと思います。私はホームページと同じテンプレートを使いたいので、これをやりたいマイurls.py
が
url(r'^$', HomePageView.as_view(paginate_by=5, date_field='pub_date',template_name='homepage.html'),
),
url(r'^tag/(?P<tag_slug>[-\w]+)/$', 'tag_view'), # I know this is wrong
である私のviews.py
は私がここに迷ってしまいまし実現、および修正その新しいクラスTagViewPage()
を作成する方法を見つけることにいくつかの助けをしたいと思い
class HomePageView(ArchiveIndexView):
"""Extends the detail view to add Events to the context"""
model = Entry
def get_context_data(self, **kwargs):
context = super(HomePageView, self).get_context_data(**kwargs)
context['events'] = Event.objects.filter(end_time__gte=datetime.datetime.now()
).order_by('start_time')[:5]
context['comments'] = Comment.objects.filter(allow=True).order_by('created').reverse()[:4]
return context
ですtag_slugでフィルタリングしてクエリーセットを作成します。
ありがとう、私はいくつかの編集で私のために働いた。 paginate_byとself.kwargs ['tag_slug']を追加する必要があります。また、HomePageViewからサブクラス化する場合は、get_context_data(self、** kwargs)関数を完全に取り除くことができると思います。 – Trewq
私は自分の答えを 'self.kwargs ['tag_slug']'で修正しました。テンプレートコンテキストにタグを必要としない限り、 'get_context_data'メソッドは必須ではありません。この行の代わりに – Alasdair
が必要です。context_data ['tag'] = Tag.objects.get(slug = self.kwargs ['tag_slug'])get_object_or_404 – soField