2013-03-03 34 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 %}