我有一个与排版相关的小模板标签库,几乎每个页面都使用它。现在我需要使用
为每个模板加载它{% load nbsp %}
有没有办法一次性为所有视图和模板“全局”加载它?将加载标记放入基础模板不起作用。
答案 0 :(得分:70)
add_to_builtins
中有django.template.loader
个方法。只需传递templatetags模块的名称(作为字符串)。
from django.template.loader import add_to_builtins
add_to_builtins('myapp.templatetags.mytagslib')
现在mytagslib
可在任何模板中自动使用。
答案 1 :(得分:29)
它将随着Django 1.9的发布而改变。
自1.9以来,正确的方法是在builtins
的{{1}}密钥下配置模板标记和过滤器 - 请参阅下面的示例:
OPTIONS
详细说明: https://docs.djangoproject.com/en/dev/releases/1.9/#django-template-base-add-to-builtins-is-removed
答案 2 :(得分:27)
在django 1.7中,只需替换为from django.template.base import add_to_builtins
答案 3 :(得分:5)
在Django 1.9中,有一个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
},
},
},
]