Django Mixin для добавления переменных контекста

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

У меня есть следующее в mixins.py:

class GenericFormMixin(object):
    page_title = ''
    form_title = ''
    submit_button_text = ''

Вместо создания modelname_create.html и modelname_update.html для каждого CreateView или UpdateView, который у меня есть, я хочу иметь возможность использовать generic_form.html, который будет использовать переменные миксина в своем контексте для динамического создания соответствующим образом заполненного шаблона:

{% extends "base.html" %}

{% block title %}{{ page_title }}{% endblock title %}

{% block content %}

  <div class="panel panel-primary">
    <div class="panel-heading">{{ form_title }}</div>
    <div class="panel-body">
      <form method="post" action=".">
          {{ form }}
          {% csrf_token %}
          <button type="submit" class="btn btn-primary">{{ submit_button_text }}</button>
      </form>
    </div>
  </div>

{% endblock content %}

Мой вопрос: теперь, когда я создал миксин, как мне получить переменные в контексте шаблона CreateView и UpdateView?


person voodoo-burger    schedule 15.09.2016    source источник


Ответы (1)


Определите get_context_data в своем миксине. Он должен вызывать метод суперкласса, добавлять свои элементы в возвращаемый оттуда словарь, а затем возвращать dict.

person Daniel Roseman    schedule 16.09.2016