質問

[この議論は http:// groups。 google.com/group/django-users/browse_thread/thread/989c569d5118980d]

は「django.template.loaders.app_directories.load_template_source」です カスタムテンプレートタグのTEMPLATE_LOADERS設定で必要 作業?

Djangoアプリケーションのtemplatetagsディレクトリにカスタムタグを置くだけで、そのタグをアプリケーションで使用できるようになります。

テンプレートの読み込みの場合、TEMPLATE_LOADERS設定に「django.template.loaders.filesystem.load_template_source」を設定すると、TEMPLATE_DIRSの適切なエントリが一緒に、Djangoからテンプレートを読み込むことができることがわかります指定されたディレクトリ。これは非常に明確で論理的です。しかし、カスタムテンプレートタグの場合、魔法のように利用できるようになります。

では、カスタムテンプレートタグがどのように検出/ロード/処理されるかご存知ですか?

役に立ちましたか?

解決

いいえ、 django.template.loaders.app_directories.load_template_source は、カスタムテンプレートタグが機能するためにまったく必要ありません。

djangoに templatetags ライブラリをロードする場所を指示するためにディレクトリを指定する必要はありません(テンプレートの場合のように)、coz djangoは< code> INSTALLED_APPS リスト。

INSTALLED_APPS のアプリケーションリストをループし、「 templatetags 」ディレクトリからすべてのライブラリをインポートし、それぞれをインポートして使用可能にします。 templatetagsというディレクトリが見つからない場合は、スキップします。ただし、INSTALLED_APPSで使用可能なすべてのオプションを確認しようとします。

django / templatetags / __ init __。py のコードを見ると、templatetagsが(魔法のように)利用可能になっていることがわかります。コードを見て、

from django.conf import settings

for a in settings.INSTALLED_APPS:
    try:
        __path__.extend(__import__(a + '.templatetags', {}, {}, ['']).__path__)
    except ImportError:
        pass

これらのモジュールリストを __ path __ に追加するだけです。また、 __ path __ にリストされているものはすべて、 __ path __ リストが表示されるモジュールのサブモジュールとして存在するかのように扱われます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top