我想为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的模板上下文中?
答案 0 :(得分:2)
在mixin中定义get_context_data
。它应该调用超类方法,将其元素添加到从那里返回的字典中,然后返回字典。