gpt4 book ai didi

python - 如何使用 CBV 在所有 Django 模板中创建侧边栏?

转载 作者:太空宇宙 更新时间:2023-11-03 17:57:12 24 4
gpt4 key购买 nike

我的问题是我的所有页面上都需要动态标签列表,并且该页面上的所有帖子(一篇帖子)内容也需要。如何使用基于类的 View 在所有页面上包含标签侧边栏?谢谢。

编辑:标签列表必须按使用频率排序。我的代码:

class AllTagCloudView(ListView):
model = Tag
template_name = 'tag_cloud.html'
context_object_name = 'tag_cloud'

def get_queryset(self):
qs = Tag.objects.values("name", "slug").annotate(Count("post")).order_by('-post__count')
return qs

我尝试过使用

@register.inclusion_tag('tag_cloud.html', takes_context=True)
def sidebar_sorted_tags(context):

但我不明白如何做到这一点。

我还尝试使用 {% include 'tag_cloud.html' %}:

<div>
<p>Tags</p>
{% for tag in tag_cloud %}
<ul>
<li><a href="/tag/{{ tag.get_absolute_url }}">{{ tag.name }}</a></li>
</ul>
{% empty %}
<a href="">There is no tags yet</a>
{% endfor %}
</div>

我认为这是愚蠢的事情或者我做错了事情。

最佳答案

此任务与基于类的 View 无关。您需要使用自定义inclusion template tag .

@register.inclusion_tag('tag_cloud.html')
def sidebar_sorted_tags():
return {'tag_cloud': Tag.objects.values("name", "slug")
.annotate(Count("post")).order_by('-post__count')}

现在在您的 base.html 模板中写入:

{% load my_tags %}

{% sidebar_sorted_tags %}

关于python - 如何使用 CBV 在所有 Django 模板中创建侧边栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28320751/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com