为所有视图默认加载一个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 }, }, }, ]