python - 如何统计标签的使用次数并在html中显示?

标签 python django count

我想计算标签的使用次数并显示它。 我尝试了这个解决方案,但它显示了帖子中的标签数量。 我知道 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/

相关文章:

Django 在 bool 字段上注释

python - 具有动态名称的 Django 模型字段

perl - 计算包含数十万个文件的目录中文件数量的最快方法

python - 无法解析 [{ 和 }] Python 之间返回的 JSON 数据

python - python 中的正则表达式 - 找不到特定的字符串

python - Ubuntu 13.10 : No Module Named appindicator

python - 尝试连接 ModelForm

JQuery 子级数

python - 形成一个字典,键来自列表,值是 Python 中另一个列表中项目的出现

python - 通过哈雷法使用 tensorflow 求四次多项式的根