Django: 'current_tags'不是一个有效的标签库。

80

我有一个小的 Django 项目,是从朋友那里获得的。在他的系统上,代码运行得很完美。但是,在我的系统上,当运行服务器时,我会收到以下错误消息:

TemplateSyntaxError at /

'current_tags' 不是一个有效的标签库:模板库 current_tags 未找到,请尝试 django.templatetags.current_tags。

问题出现在 HTML 文件中的一行代码:

{% load current_tags %}

这段完全相同的代码在他的系统上可以正常运行且没有错误,可能是什么问题呢?


78
为了帮助他人节省查找这些问题的20分钟时间:如果您刚刚创建了自定义标签文件(这是您在给定应用程序中的第一个自定义标签),则需要重新启动Django开发服务器,以便它可以读取新文件。当这是您唯一的问题时,会显示此错误。 - chucksmash
2
@chucksmash 谢谢耶稣。 - smilebomb
2
请记得重新启动开发服务器。 - brainLoop
17个回答

2

请确保load语句正确。它应该是文件的名称,而不是应用程序的名称。例如,如果您有这个应用程序:

appname
├── __init__.py
├── templatetags
│   ├── __init__.py
│   └── foobarfilename.py

那么您应该将这个放在您的模板中:

然后您需要将以下内容放入您的模板中:

{% load foobarfilename %}

当然,您也应该查看其他答案。

2

在创建模板标签后,它应该位于已安装在settings.INSTALLED_APPS中的应用程序的“templatetags”包中,请确保重新启动开发服务器。


1
也许有人会觉得这很有用:我不知怎么地把目录命名为'templatetags '而不是'templatetags',也就是说——末尾带有一个空格。花了几个小时才终于意识到。

0
在我的情况下,我使用标签变量而不是寄存器变量创建了库实例。
tag = template.Library()

但它应该是这样的

register = template.Library()

要成为有效的标签库,模块必须包含一个名为“register”的模块级变量,它是一个template.Library实例,在其中注册所有的标签和过滤器。

0
在我的情况下,问题是我使用了{% load filter_method_name %},我不得不改成{% filename %}

0
以下所有建议都没有帮到我。所以在我的情况下,问题是模板标签必须从第三方应用程序加载,我手动将包含该应用程序的源文件夹复制到虚拟环境中的src文件夹中。然后我在该文件夹中运行了python setup.py install。之后Django无法加载此模块。
然后我删除了此应用程序的源和安装文件夹,并在将相关行添加到requirements.txt文件后使用pip install -r requirements.txt进行安装。它被下载到src文件夹中,安装完成后一切开始正常工作。希望这对某人有所帮助。

0
在我的情况下,我正在使用。
@register.inclusion_tag('template-to-use.html')

我忘记创建那个模板,然后它就开始工作了。我知道上面的答案更多地涉及到大多数问题 - 但希望也许有人会觉得它有用。这应该让我想起来:

Template does not exist

但它没有,这个起作用了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接