Подтвердить что ты не робот

Загрузите библиотеку тегов шаблонов Django для всех просмотров по умолчанию

У меня есть небольшая типографическая библиотека templatetag, которую я использую почти на каждой странице. Прямо сейчас мне нужно загрузить его для каждого шаблона, используя

{% load nbsp %}

Есть ли способ загрузить его "глобально" для всех видов и шаблонов сразу? Вставка ярлыка загрузки в базовый шаблон не работает.

4b9b3361

Ответ 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
            },
        },
    },
]