私はほとんどすべてのページで使用する小さなタイポグラフィ関連のtemplatetagライブラリを持っています。今すぐテンプレートごとにロードする必要がありますデフォルトでは、すべてのビューのDjangoテンプレートタグライブラリをロードします
{% load nbsp %}
すべてのビューとテンプレートを一度に「グローバルに」読み込む方法はありますか?ロード・タグを基本テンプレートに入れても機能しません。
私はほとんどすべてのページで使用する小さなタイポグラフィ関連のtemplatetagライブラリを持っています。今すぐテンプレートごとにロードする必要がありますデフォルトでは、すべてのビューのDjangoテンプレートタグライブラリをロードします
{% load nbsp %}
すべてのビューとテンプレートを一度に「グローバルに」読み込む方法はありますか?ロード・タグを基本テンプレートに入れても機能しません。
django.template.loader
にadd_to_builtins
メソッドがあります。 templatetagsモジュールの名前を文字列として渡すだけです。
from django.template.loader import add_to_builtins
add_to_builtins('myapp.templatetags.mytagslib')
mytagslib
は、どのテンプレートでも自動的に利用可能です。ジャンゴ1.7で
ちょうどそれは、Djangoの1.9リリースで変更されますfrom django.template.base import add_to_builtins
なぜdownvoteですか?受け入れられた答えが時代遅れだったので、これは私の一日を救った! Django 1.7ではインポートパスが変更されました。ありがとうbsao! –
これは[既存の回答](http://stackoverflow.com/a/1185049/1075247)のコメントまたは編集ですか?それはそれ自身では意味をなさない。 – Pureferret
のために交換してください。 1.9以降
、正しいアプローチはOPTIONS
のbuiltins
キーの下にテンプレートタグやフィルタを設定します - 以下の例を参照してください。
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'builtins': ['myapp.builtins'],
},
},
]
詳細:Djangoの1.9では https://docs.djangoproject.com/en/dev/releases/1.9/#django-template-base-add-to-builtins-is-removed
今のところ(Django 1.9)、これは受け入れられた答えでなければなりません。 –
''builtins':['django.templatetags.i18n']、'ああええ。 –
libraries
辞書がありますがテンプレートエンジンに登録するために、テンプレートタグモジュールのラベルと点線のPythonパスを使用します。これは、新しいライブラリを追加したり、既存のライブラリの代替ラベルを提供するために使用できます。
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
'libraries': { # Adding this section should work around the issue.
'custom_tags' : 'myapp.templatetags.custom_tags',#to add new tags module.
'i18n' : 'myapp.templatetags.custom_i18n', #to replace exsiting tags modile
},
},
},
]
ありがとうございます。 –
これを行うことができますが、ある時点で後悔する可能性が高いことに注意してください(私はそれをやって、それを後悔しました)。これにより、テンプレートはadd_to_builtinsを持たない他のプロジェクトに移植することができなくなります(テストランナーがadd_to_builtinsも実行していることを確認しない限り)。全体としては、利便性の点で非常に小さな利益のために、より脆弱になります。 –
新しい開発者は、標準ライブラリには存在しないタグを使用して迷惑をかけることはありません。 :)覚えておいて、明示的なものは暗黙的なものよりも良い。 –