Загрузка библиотеки тегов шаблонов Django для всех представлений по умолчанию
У меня есть небольшая библиотека тегов, связанная с типографикой, которую я использую почти на каждой странице. Сейчас мне нужно загрузить его для каждого шаблона, используя
{% load nbsp %}
Есть ли способ загрузить его "глобально" для всех представлений и шаблонов одновременно? Помещение тега загрузки в базовый шаблон не работает.
4 ответа
Есть add_to_builtins
метод в django.template.loader
, Просто передайте имя вашего модуля templatetags (в виде строки).
from django.template.loader import add_to_builtins
add_to_builtins('myapp.templatetags.mytagslib')
Сейчас mytagslib
доступно автоматически в любом шаблоне.
Это изменится с выпуском Django 1.9.
Начиная с версии 1.9, правильным подходом будет настройка тегов и фильтров шаблонов в builtins
ключ от OPTIONS
- см. пример ниже:
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 1,7 просто заменить from django.template.base import add_to_builtins
В 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
},
},
},
]