web-dev-qa-db-ja.com

Django:テンプレートタグを読み込めません

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

これは、パスまたはセットアップに問題があることを意味しますか?何か案は?

24
Nate Reed

これに遭遇した他の人への注意:Djangoアプリに新しいファイルを登録するには、開発サーバーを再起動する必要があります。

86

私の問題はタイプミスが原因でした。テンプレートタグでファイルを__init.py__と呼びましたが、__init__.pyという名前にする必要がありました。

15
Nate Reed

私も同じ問題を抱えていました。問題は、共有のtemplatetagsディレクトリを使用していて、その中に__init__.pyが含まれていないことでした。その空のファイルを追加し、サーバーを再起動すると、すべてが順調でした。

8
JayCrossler