Django:无法加载模板标签

Nat*_*eed 24 tags django templates

我正在使用Django 1.2.1,我在尝试加载模板标签时遇到问题:

{% load mytags %}

TemplateSyntaxError at /myapp/

'mytags' is not a valid tag library: Template library mytags not
found, tried django.templatetags.mytags
Run Code Online (Sandbox Code Playgroud)

它的定义是myproject/myapp/templatetags/mytags.py.

nate@nate-desktop:~/work/django-projects/myproject$ ls myapp/templatetags/
mytags.py  __init.py__
nate@nate-desktop:~/work/django-projects/myproject$ more
myapp/templatetags/mytags.py


from django import template

register = template.Library()

@register.simple_tag
def myclass(request):
    return request.path
Run Code Online (Sandbox Code Playgroud)

我添加了'myapp' INSTALLED_APPS并更新TEMPLATE_LOADERS(根据StackOverflow的建议):

TEMPLATE_LOADERS = (
   'django.template.loaders.filesystem.Loader',
   'django.template.loaders.app_directories.Loader',
   'django.template.loaders.eggs.Loader',
   'django.template.loaders.app_directories.load_template_source',
)
Run Code Online (Sandbox Code Playgroud)

当我启动服务器时,我看到此警告消息:

/usr/local/lib/python2.6/dist-packages/django/template/loaders/eggs.py:4:
UserWarning: Module _mysql was already imported from
/usr/lib/pymodules/python2.6/_mysql.so, but
/usr/lib/pymodules/python2.6 is being added to sys.path
Run Code Online (Sandbox Code Playgroud)

当我尝试在shell中导入我的模块时,我也无法导入它:

>>> from django.templatetags import mytags
Traceback (most recent call last):
 File "<console>", line 1, in <module>
ImportError: cannot import name mytags
>>> from myapp.templatetags import mytags
Traceback (most recent call last):
 File "<console>", line 1, in <module>
ImportError: No module named templatetags
Run Code Online (Sandbox Code Playgroud)

这是否意味着我的路径或设置有问题?有任何想法吗?

sta*_*ets 86

对于遇到此问题的其他人的说明:您需要重新启动开发服务器以在django应用程序中注册新文件.

  • 好吧,还有20分钟的排水管,但你无论如何都为我节省了20多分钟.谢谢. (7认同)

Nat*_*eed 15

我的问题是由于一个错字.我在templatetags中调用了该文件,__init.py__但它应该被命名__init__.py.


Jay*_*ler 8

我遇到过同样的问题.问题是我使用的是共享templatetags目录,而且没有__init__.py.添加了空文件,重启服务器,一切都很顺利.