为所有视图默认加载一个Django模板标签库
我有几乎每一个页面上都使用了一个小的排版相关的模板标签库。 现在我需要使用每个模板加载它
{% load nbsp %}
有没有办法一次加载所有视图和模板的“全球”? 将加载标签放入基本模板不起作用。
django.template.loader
有一个add_to_builtins
方法。 只要传递你的templatetags模块的名字(作为一个string)。
from django.template.loader import add_to_builtins add_to_builtins('myapp.templatetags.mytagslib')
现在, mytagslib
可以在任何模板中自动使用。
在django 1.7中只需from django.template.base import add_to_builtins
取代
它将随着Django 1.9发布而改变。
从1.9开始,正确的方法是在OPTIONS
builtins
键下面configuration模板标签和filter – 参见下面的例子:
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': { 'builtins': ['myapp.builtins'], }, }, ]
详情: https : //docs.djangoproject.com/en/dev/releases/1.9/#django-template-base-add-to-builtins-is-removed
在Django 1.9中,有一个模板标签模块的标签libraries
字典Pythonpath的libraries
字典,用于向模板引擎进行注册。 这可以用来添加新的库或为现有的库提供替代标签。
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 }, }, }, ]