如何在base.html中使用自定义模板标记

时间:2014-06-18 14:48:22

标签: django django-templates

.是我的项目根目录,其中manage.py位于其中。我在./templates/base.html有一个基本模板。我在./app/templatetags/mytags.py

中有自定义模板标记
from django import template

register = template.Library()

@register.unread_tag
def get_unread(user):
    return user.notification_set.filter(viewed=False).count()

如何使此标记可用于base.html,所有应用级模板都从该标记继承。

2 个答案:

答案 0 :(得分:2)

您的代码定义不正确。您需要使用register.simple_tag装饰器:

@register.simple_tag(name='unread')
def get_unread(user):
    return user.notification_set.filter(viewed=False).count()

然后,您需要将load标记添加到模板中:

{% load mytags %}

然后,您可以在模板中使用该标记:

{% unread request.user %}

答案 1 :(得分:0)

一个很老的问题,但是自从被问到以来情况已经改变了。
您可以使用settings.py的{​​{1}}中的键builtinsOPTIONS中为项目中的所有模板加载自定义标签

settings.TEMPLATES

您可以在Django doc - DjangoTemplates内置后端中详细了解这些选项。

从Django 1.9开始支持此选项。