我创建了一个自定义的简单标签,该标签对一个对象进行计数并返回它。我希望该计数显示在导航栏中。这样就可以通知用户。
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>
我希望计数将显示在文本旁边,并带有引导程序。但是它什么也没显示。
答案 0 :(得分: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/上的相关文档(从右下角选择特定版本)。
在 notifications.py 中将def new_notification(request):
替换为def new_notification():
,因为在模板{{1}中使用模板标记时,您没有向该函数传递任何额外的参数}。
现在,刷新页面,就我而言,您可以看到结果并且该页面正在运行。