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