Django расширяет файл base.html вместе с его контекстом
Я передал переменную в base.html из моего файла views.py в контексте. Я расширил этот base.html на несколько других шаблонов. Переменная видна только в base.html, но не в любом другом расширенном шаблоне.
Это работает, если я передаю один и тот же контекст в каждый файл шаблона views.py.
Поскольку я расширил базу, не должна ли она расширить и переменную? Есть ли другой способ заставить это работать, или я что-то упустил?
Когда вы расширяете шаблон, он наследует html-код. Контекст должен всегда передаваться представлением. Если вы хотите передавать всегда один и тот же контекст, вам нужно подклассифицировать представление, а не шаблон. Вы можете написать миксин:
class GetContextViewMixin:
def get_context_data(self, *args, **kwargs):
return ['foo': 'foo'] # Replace with the real context
Затем, когда вам нужен тот же контекст, вы можете использовать наследование:
from django.views.generic import TemplateView
# The template of this view will obtain its context from the mixin method
class ExampleView(GetContextViewMixin, TemplateView):
template_name = 'foo.html'