2013-03-03 69 views
1

文件结构:Django的装载templatetags不能正常工作

_project_ 
    __init__.py 
    settings/ 
     __init__.py 
     settings.py 
    apps/ 
     __init__.py 
     newapp/ 
      __init__.py 
      models.py 
      .... 
      templatetags/ 
       __init__.py 
       test_tag.py 

... 
__init__.py 
manage.py 

test_tag.py包含:

from django import template 
from django.template.defaultfilters import stringfilter 

register = template.Library() 

@register.filter 
@stringfilter 
def lower(value): 
    return value.lower() 

的test.html包含:

{% load test_tag from _project_.apps.newapp.templatetags %} 

的Django 1.5 Shell(python manage.py shell):

(InteractiveConsole) 
>>> from _project_.apps.newapp.templatetags import test_tag 
>>> test_tag.lower("QWERTY") 
u'qwerty' 

Django的1.5设置:

INSTALLED_APPS = (
    ... 
    '_project_.apps.newapp', 
    ... 
) 

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader', 
    'django.template.loaders.app_directories.Loader', 
) 

不过在Django 1.5生成异常TemplateSyntaxError:

'_project_.apps.newapp.templatetags' is not a valid tag library: Template library _project_.apps.newapp.templatetags not found, tried ... 

P.S:服务器重启,*去除pyc文件,但存在问题。当'newapp'位于/ 项目/newapp/- 一切正常。

+1

,问题是......“我怎么解决?”? – 2013-03-03 20:45:25

+0

>>问题是......“我该如何解决它?”? 是的,因为我写了问题的问题,没有'答案' – ikravets 2013-03-04 06:33:12

回答

1

我认为你必须修复在HTML页面中

{% load test_tag %} 
+0

非常感谢,它适用于我!在这种情况下[KISS Principle won](http://en.wikipedia.org/wiki/KISS_principle):) – ikravets 2013-03-04 06:44:18

1

加载templat标签您使用的是{% load %}语法错误的方式。通过the doc{% load foo from bar %}从标签库bar中加载名为foo的标签或过滤器。在你的情况{% load test_tag from _project_.apps.newapp.templatetags %}test_tag是库的名称,而不是标签或过滤器名称。

所以应该更像:

{% load lower from test_tag %}