13

現在、いくつかのカスタム テンプレート タグを作成していますが、何らかの理由で読み込まれません。私のディレクトリ構造は次のとおりです。

MyProj
 |
 ----MyApp
     |
     |----templatetags
          |
          |----myapp_tags.py
          |----__init__.py

myapp_tags.py 内

from django.template import Library, Node
from myproj.myapp.models import Product

register = Library()

class LatestProductsNode(Node):
    def render(self, context):
        context['recent_products'] = Product.objects.all()[:5]
        return ''

def get_latest_products(parser, token):
    return LatestProductsNode()

get_latest_products = register.tag(get_latest_products)

settings.py で

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.admin',
    'myproj.myapp',
)

テンプレート内

{% load myapp_tags %}

ページを読み込もうとしたときに発生するエラー:

Exception Type:     TemplateSyntaxError Exception Value:    

'myapp_tags' is not a valid tag library: Could not load template library from django.templatetags.myapp_tags, No module named myapp_tags
4

5 に答える 5

21

settings.pyでは、プロジェクトに明示的に「myproj」という名前を付けないでください。ではINSTALLED_APPS、「myapp」を使用してください。また、これが必要です:

TEMPLATE_LOADERS = (
    'django.template.loaders.app_directories.load_template_source',
)

__init__.pyまた、myappフォルダとに があることを確認してくださいtemplatetags

manage.py shellthenを使用して、 myapp_tags.pyファイルfrom myapp.templatetags import myapp_tagsに Python エラーがあるかどうかを確認します。

また、myapp_tags.pyファイル名がプロジェクト内の別のフォルダー/ファイルと競合しないことを確認してください。

お役に立てれば。

于 2009-09-29T16:07:18.667 に答える
16

私をつまずかせたのは、テンプレートタグの魔法のインポートが開発サーバーの自動リロードをバイパスすることです。以下が機能する場合manage.py shell

>>> from django.templatetags import myapp_tags
>>>

その後、すべてが実際に機能し、開発サーバーをリロードする必要があります。一方ImportError、何かが間違っている場合は、templatetagsディレクトリに__init __。pyファイルがあり、他のすべての回答で提案されていることを確認する必要INSTALLED_APPSがあります

これはおそらく、テンプレートタグの読み込みの問題を経験している人のごく一部にのみ当てはまりますが、この質問に数週間で到達したのはこれが2回目であり、どちらの場合も、開発サーバーを再起動して動作させるだけです。 。

于 2009-10-06T20:51:39.210 に答える
2

いくつかの理由:

  1. templatetgs コードのエラーが原因です。
  2. テンプレートタグでモデルのインポートを使用した場合

たとえば、#2の場合。あなたがしている場合:

from your_app2.models import model

これはうまくいかないので、代わりに上記のようにする必要があります

from your_project.your_app2.models import model

それは私をこのように働かせました。

于 2011-06-14T02:41:29.953 に答える
-3

問題はnyapp_tags、インストールされたプロジェクトの最上位にないことです。myproj.myapp.templatetagsを入れればINSTALLED_APPS大丈夫です。

于 2009-09-27T17:26:17.073 に答える