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

sna*_*ile 74 python django portability

我有一个我从朋友那里收到的小Django项目.该代码完美地适用于他的系统.但是,在我的系统上运行服务器时收到以下错误消息:

在/的TemplateSyntaxError

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

问题是在html文件中有一行:

{% load current_tags %}
Run Code Online (Sandbox Code Playgroud)

这个完全相同的代码在他的系统上运行,没有错误.那可能是什么?

小智 81

我建议如下:

  1. (很可能)您尚未安装标记库的某个依赖项.检查current_tags.py模块内的导入.

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

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

    python manage.py shell
    >>> from app.templatetags import current_tags
    
    Run Code Online (Sandbox Code Playgroud)

    这归结为以下链接推荐的内容,即错误本身会误导您从哪里寻找模板.它默默地忽略导入时的错误,这意味着current_tags.py它本身可能有语法错误或其引发ImportError的其他原因.

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

  • 如果这些不起作用,请在INSTALLED_APPS中检查应用**的**顺序.如果您的某个应用使用其他应用中的模板标记,则该第二个应用定义为依赖关系,必须先列出. (32认同)
  • 不要忘记再打开和关闭它;),意思是,不要忘记重新启动服务器 (17认同)
  • 如果仍然无法正常工作,请删除.pyc文件并重试(这解决了我的问题一次) (9认同)
  • 与上面的评论类似,我尝试了很多修复,我没有注意到正在使用其他Django控制台实例,这导致一些库不刷新!如果您认为一切正常并且无法找到问题,请关闭所有正在运行的实例并再试一次. (3认同)

ty.*_*ty. 75

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

  • 我不得不重启dev服务器. (10认同)

Ctr*_*l-C 62

可能性很多:

  1. 您尚未重置开发服务器.
  2. 你在templatetag文件中有依赖循环.
  3. 拼错了一些东西('load'中的目录,文件夹,模板名称等).
  4. 您忘了将应用添加到INSTALLED_APPS.


Kri*_* PC 12

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


ste*_*308 6

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

我把一切都搞定了,但是我将自定义标签放在一个名为的文件夹中template_tags,经过长时间的搜索,我发现它必须是templatetags,现在它可以工作了.所以检查文件夹名称是否正确templatetags.


Muh*_*man 6

假设您具有以下结构:

- 应用名称

------- 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,然后再次重试


小智 5

"自定义标记"不是有效的标记库错误,更常发生,因为自定义标记未加载到应用程序中.

将一个空的init .py放在放置"自定义模板标记"的同一文件夹中,并在终端上运行以下代码以加载自定义模板标记

touch __init__.py
Run Code Online (Sandbox Code Playgroud)


Ami*_*imi 5

对于其他面临这个问题的人来说。假设您的应用程序名称是,MyApp并且您的标签文件夹名称是,templatetags那么settings.py您应该有:

INSTALLED_APPS = [
'MyApp',
'MyApp.templatetags'
]
Run Code Online (Sandbox Code Playgroud)

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

-> MyApp
    ---> models.py
    ---> views.py
    ---> templatetags
      -----> __init__.py
      -----> app_filters.py
Run Code Online (Sandbox Code Playgroud)

在你的模板文件中:

{% load app_filters %}
Run Code Online (Sandbox Code Playgroud)

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)
Run Code Online (Sandbox Code Playgroud)

检查以上所有步骤,您可能会发现问题。