我想计算标签的使用次数并显示它。
我尝试了这个解决方案,但它显示了帖子中的标签数量。
我知道 i 是这样算的,因为它会调查 post 中使用的标签数量。
但我不明白如何告诉他他必须查看所有帖子。
当我尝试 posts.tag.count
时,它什么也没有显示。
.html 文件:
<h1 class="card-title">{{ post.title }}</title></h1>
<p class="card-text text-muted h6">{{ post.author }} | {{ post.created_on | date:"d M Y"}} | Tag:
{% for tag in post.tags.all %}
<a class="mycardtext" href="{% url 'tag' tag.slug %}"> {{ tag.name }} {{ post.tags.count }} </a>
{% empty %}
None
{% endfor %}
</p>
我也尝试了 {{tag.count}},但它也没有显示任何内容。
使用 {{ 标签 | length}}
我也尝试过,但是当然它显示的是标签的长度而不是次数。
当我尝试{{post.tags | length}}
然后显示 0
模型.py
class Post(models.Model):
title = models.CharField(max_length=200, unique=True)
slug = models.SlugField(max_length=200, unique=True)
author = models.ForeignKey(User, on_delete= models.CASCADE,related_name='blog_posts')
updated_on = models.DateTimeField(auto_now= True)
content = RichTextField(config_name='awesome_ckeditor')
created_on = models.DateTimeField(auto_now_add=True)
status = models.IntegerField(choices=STATUS, default=1)
tags = TaggableManager()
View .py
def tag(request, slug):
posts = Post.objects.filter(tags__slug=slug)
return render(request, 'index.html', {"post_list": posts, "slug": tag})
最佳答案
如果您想显示某个标签在任何帖子中使用了多少次,那么您必须创建一个自定义过滤器,它基本上是一个可以在模板中调用的函数。
在当前应用的同一目录中创建一个名为templatetags
的文件夹
my_app
======
models.py
views.py
templatetags
__init__.py
app_tags.py
app_tags.py
===========
from my_app.models import *
from django import template
register = template.Library()
@register.filter(name='count_tags_usage')
def count_tags_usage(tag):
posts = Post.objects.filter(tags__name__in = [tag])
return posts.count()
html
====
<html>
{% load app_tags %}
<head> .... </head>
<body>
....
<a class="mycardtext" href="{% url 'tag' tag.slug %}">
{{ tag.name }} {{ tag|count_tags_usage }}
</a>
</body>
</html>
关于python - 如何统计标签的使用次数并在html中显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56491917/