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

我有一个朋友从我收到的小Django项目。 代码完美地在他的系统上运行。 但是,在我的系统上运行服务器时出现以下错误信息:

TemplateSyntaxError at /

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

问题是在HTML文件中的一行:

{% load current_tags %} 

这个完全相同的代码在他的系统上工作没有错误。 那可能是什么?

我会build议如下:

  1. (很有可能)您还没有安装标签库的某个依赖项。 检查current_tags.py模块内的导入。

  2. 确保包含标签库的应用程序在INSTALLED_APPS下的settings.py注册。

  3. 确保您可以成功导入标签库。

     python manage.py shell >>> from app.templatetags import current_tags 

    这可以归结下面的链接build议,这是错误本身往往误导你在哪里寻找一个模板。 它静静地忽略导入错误,这意味着current_tags.py本身可能有语法错误,或者为什么会引发ImportError。

如果一切都失败了,请查看这个链接: http : //www.b-list.org/weblog/2007/dec/04/magic-tags/

我有这个问题,并通过在我的appname / templatetags /目录中添加一个空白的__init__.py文件来修复它。

可能性很多:

  1. 你还没有重置你的开发服务器
  2. 你在templatetag文件中有依赖循环
  3. 拼写错误 (目录,文件夹,“加载”模板名称等)。
  4. 你忘了将应用程序添加到INSTALLED_APPS

重新启动服务器已经解决了我的问题。 他们必须在文件中提到它。

我得到了同样的错误,但出于不同的原因,所以我会告诉你(以防其他人出现同样的问题)。

我有一切权利,但我有一个名为template_tags的文件夹内我的自定义标签,经过漫长的search,我发现它必须是templatetags标签,现在它的工作。 所以检查文件夹名称是完全templatetags

假设你有以下结构:

– 应用名称

——- templatetags

————– init .py

————–templates_extras.py

——- init .py

——-settings.py

– manage.py

你必须确保以下内容:

  • 你的“templatetags”驻留的应用程序本身实际上安装在settings.py的INSTALLED_APPS中(例如“Application_Name”)

  • 您在“templatetags”内存在的标签模块本身已经安装在settings.py的INSTALLED_APP中(例如“ApplicationName.templatetags.tempaltes_extras”)

  • 确保在templatetags目录下有“ init .py”

  • 你必须重新启动服务器

  • 在某些情况下,如果不工作,则必须删除所有生成的* .pyc,然后重试

“自定义标签”不是有效的标签库错误,更经常发生的原因是自定义标签没有加载到应用程序中。

在您的“自定义模板标签”所在的同一文件夹中放置一个空的init .py,并在terminal上运行以下代码以加载自定义模板标签

 touch __init__.py 

请确保你的templatetags文件夹是用python初始化的,如果你有疑问,只要把所有的文件都打包好,

删除所有文件,在templatetags文件夹内只创buildinit .py文件,然后重新启动服务器,

现在你的文件夹在Python下,然后做你的东西。

这适用于我…

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

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

那么你应该把它放在你的模板中:

 {% load foobarfilename %} 

当然,你也应该检查其他答案。

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

对于其他面临这一点。 假设你的App名称是MyApp ,你的标签文件夹名称是templatetags那么在settings.py你应该有:

 INSTALLED_APPS = [ 'MyApp', 'MyApp.templatetags' ] 

那里需要你的应用程序包下的django应用程序和标记文件夹。

 -> MyApp ---> models.py ---> views.py ---> templatetags -----> __init__.py -----> app_filters.py 

并在您的模板文件中:

 {% load app_filters %} 

另外app_filters.py就像:

 # coding=utf-8 from django import template register = template.Library() @register.filter(name='get_item') def get_item(dictionary, key): return dictionary.get(key) 

检查所有上述步骤,你可能会发现这个问题。

对我来说,这是在load标签中引用库名称的错误。

错误: {% load 'library_name' %}

正确: {% load library_name %}

也请参阅其他答案。 我在登陆这里之前解决了一些问题。

所有在这里列出的build议并没有帮助我。 所以在我的具体情况下,问题是,模板标签必须从第三方应用程序加载,我手动将该应用程序的源文件夹复制到我的virtualenv src文件夹中。 然后我运行python setup.py install在该文件夹内。 之后,django无法加载这个模块。

然后,我删除了这个应用程序的源文件和安装文件夹,并在将相关行添加到requirements.txt文件后,使用pip install -r requirements.txt进行pip install -r requirements.txt 。 它被下载到src文件夹中,安装完毕,一切正常。 希望这有助于某人。

也许有人会发现这有用:不知何故,我已经命名目录'templatetags '而不是'templatetags' ,就是 – 最后一个空格。 花了几个小时才终于实现。

在我的情况下,我已经使用标记variables而不是寄存器variables创build库实例

 tag = template.Library() 

但应该是

 register = template.Library() 

要成为有效的标签库,模块必须包含一个名为register的模块级variables,该variables是一个template.Library实例,其中注册了所有的标签和filter