模板标签中的对象计数

时间:2019-04-19 14:00:50

标签: python-3.x django-2.0

我创建了一个自定义的简单标签,该标签对一个对象进行计数并返回它。我希望该计数显示在导航栏中。这样就可以通知用户。

  1. 我做了一个模板标签并注册了
  2. 我将标签加载到了base.html中
  3. 我在导航栏中使用了标签,因为我希望在那里显示计数。
  4. 它只会过滤掉false字段为“ live”的对象
  5. 我在应用程序目录中创建了一个templatetags目录。
  6. 我在templatetags中添加了一个__ init __。py

notifications.py(templatetags / notifications.py)

from django import template
from home.models import ReportRequests

register = template.Library()

@register.simple_tag
def new_notification(request):
    a = ReportRequests.objects.filter(live=False).count()
    return a



base.html

{% load notifications %}

<a href="{% url 'home:report_request' %}"><i class="fas fa-inbox"></i><p>Requests</p><span class="badge badge-pill badge-danger">{{ new_notification }}</span></a>

我希望计数将显示在文本旁边,并带有引导程序。但是它什么也没显示。

1 个答案:

答案 0 :(得分:1)

您的代码中很少有简单的错误。

现在,只需按照以下步骤解决此问题。

  1. base.html 中将{{ new_notification }}替换为{% new_notification %}

      

    注意: {{ template_context_variable }}语法用于使用模板上下文变量的值。因此,请使用{% template_tag params %}语法。根据您的Django版本,查看https://docs.djangoproject.com/en/2.1/howto/custom-template-tags/上的相关文档(从右下角选择特定版本)。

  2. notifications.py 中将def new_notification(request):替换为def new_notification():,因为在模板{{1}中使用模板标记时,您没有向该函数传递任何额外的参数}。

现在,刷新页面,就我而言,您可以看到结果并且该页面正在运行。