Django Mixin添加上下文变量

时间:2016-09-15 22:03:08

标签: django django-generic-views

我想为Django创建一个GenericFormMixin,我可以混合到CreateView和UpdateView中,让我通过动态设置页面标题,表单标题,提交按钮文本等内容来使用通用表单模板。

我在mixins.py中有以下内容:

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

我不想为每个CreateView或UpdateView创建一个modelname_create.html和modelname_update.html,而是希望能够使用generic_form.html,它将在其上下文中使用mixin的变量来动态创建一个适当填充的模板:

{% 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 %}

我的问题是:现在我已经创建了mixin,如何将变量放入CreateView和UpdateView的模板上下文中?

1 个答案:

答案 0 :(得分:2)

在mixin中定义get_context_data。它应该调用超类方法,将其元素添加到从那里返回的字典中,然后返回字典。