0

この質問は、ここで見つけることができる以前の質問の続きです。ListView共通のタグを共有するアイテムのリストを表す があります。これはビューです:

class TagView(ListView):
    model = Blog
    context_object_name = 'blog_list'
    template_name = 'tag-list.html'
    def get_queryset(self):
         queryset = super(TagView, self).get_queryset()
         return queryset.filter(tags__name__in=[self.kwargs['tag']])

タグをクリックすると (次のようになります):

<a href='{% url tag_url tag=tag %}'>{{ tag.name }}</a>

url(r'^tagged/(?P<tag>[\w-]+)/$', TagView.as_view(), name='tag_url'),

同じタグでタグ付けされた項目のリストが表示されます (stackoverflow のタグ セクションで "django" タグをクリックすると、"django" とタグ付けされたすべての質問が表示されるのと同じように)。

現在のテンプレートでクリックされたタグの名前にアクセスできるようにしたいことを除いて、これはうまく機能します。つまり、"Questions tagged {{ tag.name }}"現在のテンプレートでListView.

私のURLは次のようになります:www.example.com/tagged/djangoユーザーがリンクをクリックした後。しかしdjango、上記の URL からこのテンプレートにアクセスして、次のように言うにはどうすればよいでしょうか。私はすでに試し{{ blog_list.tag }}ましたが、何も表示されません... これが混乱を招く場合は申し訳ありません (多くの人にとって基本的なことかもしれません)。詳しく説明するために最善を尽くしました。アイデアをありがとう。

4

1 に答える 1

2

get_context_dataカスタムメソッドを実装することで、タグをテンプレートに簡単に渡すことができます。

class TagView(ListView):
    ...
    def get_context_data(self, **kwargs):
        context = super(TagView, self).get_context_data(**kwargs)
        context.update({
            'tag': self.kwargs['tag']
        })
        return context

その後、テンプレートで使用できます。

{{ tag }}
于 2013-03-20T04:15:40.873 に答える