Загрузка библиотеки тегов шаблонов 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
            },
        },
    },
]
Другие вопросы по тегам