在 Wagtail 中生成唯一的 Django-Taggit 标签列表;
Generating a unique list of Django-Taggit Tags in Wagtail;
我正在尝试在我的 Wagtail 博客索引页的侧边栏中添加类别标签列表。下面的代码确实有效,但不幸的是它遍历了帖子并将所有标签列为单独的标签,我最终得到了重复的标签。我从 Wagtail 演示构建了我的博客,因为它不像我习惯的那样使用视图,所以我不确定在哪里添加 .distinct('tags')。
模板
{% for b in blogs %}
{% for tag in b.tags.all %}
<li><a href="{% pageurl b.blog_index %}?tag={{ tag }}" class="btn btn-primary btn-xs"> <i class="glyphicon glyphicon-tag"></i> {{ tag }}<span>{{ tag }}</span></a>
{% if not forloop.last %} {% endif %}
</li>
{% endfor %}
{% endfor %}
通常会进入视图函数的任何逻辑,都可以进入页面模型的 get_context
方法:
from django.contrib.contenttypes.models import ContentType
from taggit.models import Tag
class BlogIndex(Page):
# ...
def get_context(self, request):
context = super(BlogIndex, self).get_context(request)
blog_content_type = ContentType.objects.get_for_model(BlogPage)
context['tags'] = Tag.objects.filter(
taggit_taggeditem_items__content_type=blog_content_type
)
return context
(此处的标签抓取代码改编自some internal Wagtail code。)
我正在尝试在我的 Wagtail 博客索引页的侧边栏中添加类别标签列表。下面的代码确实有效,但不幸的是它遍历了帖子并将所有标签列为单独的标签,我最终得到了重复的标签。我从 Wagtail 演示构建了我的博客,因为它不像我习惯的那样使用视图,所以我不确定在哪里添加 .distinct('tags')。
模板
{% for b in blogs %}
{% for tag in b.tags.all %}
<li><a href="{% pageurl b.blog_index %}?tag={{ tag }}" class="btn btn-primary btn-xs"> <i class="glyphicon glyphicon-tag"></i> {{ tag }}<span>{{ tag }}</span></a>
{% if not forloop.last %} {% endif %}
</li>
{% endfor %}
{% endfor %}
通常会进入视图函数的任何逻辑,都可以进入页面模型的 get_context
方法:
from django.contrib.contenttypes.models import ContentType
from taggit.models import Tag
class BlogIndex(Page):
# ...
def get_context(self, request):
context = super(BlogIndex, self).get_context(request)
blog_content_type = ContentType.objects.get_for_model(BlogPage)
context['tags'] = Tag.objects.filter(
taggit_taggeditem_items__content_type=blog_content_type
)
return context
(此处的标签抓取代码改编自some internal Wagtail code。)