Django - правильное использование миксинов с CBV - PullRequest
1 голос
/ 27 апреля 2020

Я только начал переходить от представлений на основе функций к представлениям на основе классов, поскольку я все больше осознаю преимущества последних, особенно в том, что касается модульности, которую вы можете достичь с помощью миксинов.

Однако, поскольку CBV и Mixins все еще довольно новы для меня, я хотел проверить, правильно ли я понимаю основные понятия c:

Пример:

class ReportingMixin1(object):

     def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)

        context['reportingmixin1_context']  = 'test1'

        return context


class ReportingMixin2(object):

     def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)

        context['reportingmixin2_context']  = 'test2'

        return context


class MyTemplateView(ReportingMixin1, ReportingMixin2, TemplateView):

    template_name = 'test4.html'

У меня следующие вопросы:

  1. С представлениями на основе функций я бы сделал context = {'reportingmixin1': 'test1}, но я вижу, что с представлениями на основе классов это всегда делается с помощью context['reportingmixin1'] = 'test1. Почему это так? Я предполагаю, что одной из причин является то, что при объединении нескольких миксинов в TemplateView (как в коде в моем примере), но с context = {'reportingmixin1': 'test1} и context = {'reportingmixin2': 'test2} я бы инициировал или переопределил контекстный словарь в каждом миксине, так что у вас был бы только доступ к контекстные ключи, которые я определил в своем миксине, который называется последним?
  2. Что конкретно делает context = super().get_context_data(**kwargs)? Я прочитал, что «сначала вызывается базовая реализация для получения контекста» - но что это означает в точности?
  3. Когда я комбинирую несколько Mixins в моем представлении Template шаблонов, как показано в моем примере кода в MyTemplateView, Я могу получить доступ ко всем контекстным ключам в моей форме шаблона, все мои миксины, верно?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...