Django 1.10.1'my_templatetag'不是注册的标记库。必须是以下之一:

问题描述 投票:52回答:10

我想要一个菜单​​,该菜单可以根据您所属的组进行定制。我正在使用Django 1.10.1,allauth等。当我试图制作我的templatetag时,它失败了,它说:

TemplateSyntaxError at /
'my_templatetag' is not a registered tag library. Must be one of:
account
account_tags
admin_list
admin_modify
admin_static
admin_urls
cache
i18n
l10n
log
socialaccount
socialaccount_tags
static
staticfiles
tz

'my_templatetag.py'看起来像这样:

from django import template
from django.contrib.auth.models import Group


register = template.Library()

@register.filter(name='has_group')
def has_group(user, group_name):
    group =  Group.objects.get(name=group_name)
    return group in user.groups.all()

并且我的.html文件中出现错误消息,

{%  load my_templatetag %}

我已尝试像数百万次一样重新启动服务器,也尝试更改所有名称,并且该应用程序是settings.py中INSTALLED_APPS的一部分。我在做什么错?

我想要一个菜单​​,该菜单可以根据您所属的组进行定制。我正在使用Django 1.10.1,allauth等。当我试图制作我的templatetag时,它失败了,并说:¨TemplateSyntaxError位于/'...

django django-allauth templatetags
10个回答
86
投票

除了将my_templatetag.py放入app_name/templatetags之外,请确保每次修改模板标签时都重新启动Django开发服务器(或确保它自行重新启动)。如果服务器没有重新启动,则Django将不会注册标签。


0
投票

我正在使用Django 1.11,并且遇到了同样的问题。这里的一些答案是正确的,但有些事情可能会丢失。这是我所做的:


49
投票

从django 1.9起,您可以在这样的设置中加载这些新标签/过滤器:


22
投票

确保您没有丢失以下任何步骤:


4
投票

就我而言,问题是我正在使用{% load filter_method_name %}


3
投票

重新启动django服务器。在应用程序中设置templatetag文件夹并在templatetag文件夹中设置template_name.py后,它对我有用。


3
投票

“ my_templatetag.py”存储在哪里?它应存储在应用程序内名为“ templatetags”的目录中。


1
投票

我知道这有点老了,但是今天我遇到了同样的问题。我在文档中找到了解决方案:https://docs.djangoproject.com/en/dev/howto/custom-template-tags/


0
投票

将my_templatetag.py放在app_name / templatetags内,然后在init


0
投票

您只是剪切/删除了在(例如templatetags / home.py)内部编写的代码从home.py中删除代码,然后重新启动服务器,然后再次将代码粘贴到home.py中,它将起作用。

© www.soinside.com 2019 - 2024. All rights reserved.