Шаблон Django не наследует тег от родителя

Я хотел бы получить разъяснения по следующему вопросу.

Нужно ли добавлять тег {% load static %} в каждый дочерний шаблон в моем проекте?

До сих пор мне не удавалось заставить дочерние шаблоны наследовать этот тег от родительских. Однако в книге, которую я читал, говорится следующее: "Нам нужно добавить статические файлы в наши шаблоны, добавив {% load static %} в верхнюю часть base.html. Поскольку другие наши шаблоны наследуют base.html, нам нужно добавить этот тег только один раз."

По моему опыту это не так.

Спасибо за помощь.

Нужно ли добавлять тег {% load static %} в каждый дочерний шаблон в моем проекте?

Да, это немного похоже на импорт модулей. В Python, если вы импортируете модуль A, а модуль A импортирует модуль B; то это не означает, что элементы этого модуля B находятся в области видимости модуля A.

Тег шаблона {% load … %} [Django-doc] будет загружать теги шаблонов в области видимости этого конкретного шаблона, а не всех шаблонов, наследующих от него.

Если вы действительно хотите этого, вы можете добавить шаблонные теги в builtins опцию [Django-doc] шаблонизатора, так:

# settings.py

# …

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {'builtins': ['my_app.templatetags.my_module']},
    },
]

Тогда это будет выглядеть так, как будто вы загрузили {% load my_module %} в каждый шаблон.

Конечно, но если вы не хотите добавлять его в каждый шаблон, добавьте его только в ваш шаблон base.html. Я рекомендую вам второй вариант, чтобы сделать ваш код легким.

Вернуться на верх