Шаблон 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. Я рекомендую вам второй вариант, чтобы сделать ваш код легким.