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'
Вернуться на верх