我有一个从朋友那里收到的Django小项目。该代码可以在他的系统上完美运行。但是,在我的系统上,运行服务器时收到以下错误消息:
/的TemplateSyntaxError
'current_tags'不是有效的标签库:找不到模板库current_tags,尝试过django.templatetags.current_tags
问题出在html文件中的一行:
{% load current_tags %}
此完全相同的代码可在他的系统上正常工作,没有错误。那会是什么呢?
我有一个从朋友那里收到的Django小项目。该代码可以在他的系统上完美运行。但是,在我的系统上,运行服务器时收到以下错误消息:
/的TemplateSyntaxError
'current_tags'不是有效的标签库:找不到模板库current_tags,尝试过django.templatetags.current_tags
问题出在html文件中的一行:
{% load current_tags %}
此完全相同的代码可在他的系统上正常工作,没有错误。那会是什么呢?
Answers:
我建议以下内容:
(很有可能)您尚未安装标签库的依赖项之一。检查current_tags.py
模块内部的导入。
确保包括标签库中注册的应用程序settings.py
下INSTALLED_APPS
。
确保可以成功导入标签库。
python manage.py shell
>>> from app.templatetags import current_tags
这归结为以下链接的建议,即错误本身往往会误导您寻找模板的位置。它默默地忽略导入时的错误,这意味着current_tags.py
自身可能存在语法错误或引发ImportError的其他原因。
如果其他所有操作均失败,请检查以下链接:http : //www.b-list.org/weblog/2007/dec/04/magic-tags/
假设您具有以下结构:
- 应用名称
------- templatetags
--------------初始化.py
--------------templates_extras.py
-------初始化.py
-------settings.py
-manage.py
您必须确保以下几点:
您的“模板标签”所在的应用程序本身实际上已安装在settings.py中的INSTALLED_APPS中(例如,“ Application_Name”)
您位于“ templatetags”内部的标签模块本身已经安装在settings.py中的INSTALLED_APP中(例如“ ApplicationName.templatetags.tempaltes_extras”)
确保您在templatetags目录下有“ init .py”
您必须重新启动服务器
在某些情况下,您必须删除所有生成的* .pyc(如果它不起作用),然后重试
“自定义标签”不是有效的标签库错误,因为自定义标签未加载到应用中,因此更经常发生。
将一个空的init同一文件夹内的.py在您的“自定义模板标签”被置于与终端上运行下面的代码加载自定义模板标签
touch __init__.py
对于其他面临这个问题的人。假设您的应用程序名称为,MyApp
而标签文件夹名称为,templatetags
则settings.py
您应具有:
INSTALLED_APPS = [
'MyApp',
'MyApp.templatetags'
]
那里既需要django应用程序,又需要位于应用程序包下的tag文件夹。
-> 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)
检查以上所有步骤,您可能会发现问题。
此处列出的所有建议均无济于事。因此,在我的特定情况下,问题在于必须从第三方应用程序加载templatetag,然后我将带有该应用程序的源文件夹手动复制到src
了virtualenv中的文件夹中。然后我python setup.py install
进入那个文件夹。之后,django无法加载该模块。
然后,我删除了该应用程序的源代码和安装文件夹,并pip install -r requirements.txt
在将相关行添加到requirements.txt
文件后使用进行了安装。它已下载到该src
文件夹中,已安装,并且一切正常开始。希望这对某人有帮助。
就我而言,问题是,我正在使用 {% load filter_method_name %}
我不得不换成 {% filename %}