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
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
'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',
)
サーバーを起動すると、次の警告メッセージが表示されます。
/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
モジュールをシェルにインポートしようとすると、それもインポートできません。
>>> 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
これは、パスまたはセットアップに問題があることを意味しますか?何か案は?
これに遭遇した他の人への注意:Djangoアプリに新しいファイルを登録するには、開発サーバーを再起動する必要があります。
私の問題はタイプミスが原因でした。テンプレートタグでファイルを__init.py__
と呼びましたが、__init__.py
という名前にする必要がありました。
私も同じ問題を抱えていました。問題は、共有のtemplatetags
ディレクトリを使用していて、その中に__init__.py
が含まれていないことでした。その空のファイルを追加し、サーバーを再起動すると、すべてが順調でした。