在django中重用自定义表单模板

时间:2014-04-08 09:27:47

标签: django django-templates

我为我的表单编写了一个模板,如

<h1>{% block formtitle %}{% endblock %}</h1>
<form method="post" action="">
{% csrf_token %}

[stuff]

    <button type="submit">{% block formbutton %}{% endblock %}</button>
</form>

现在我想使用相同的模板来创建和编辑对象,但是如何?

我尝试为

这样的创作创建模板
{% extend "base.html" %}
{% include "form.html" %}
{% block formtitle %}Create a new MyObject{% endblock %}
{% block formbutton %}Create{% endblock %}

但我有一个空白页面......

1 个答案:

答案 0 :(得分:1)

您必须{% extend "form.html" %}才能覆盖这些块。仅对extend声明中的模板覆盖块。

解决方案是为新表单创建一个新模板,扩展旧模板:

{% extend "base.html" %}
{% include "my_form.html" %}

# my_form.html
{% extend 'form.html' %}
{% block formtitle %}Create a new MyObject{% endblock %}
{% block formbutton %}Create{% endblock %}

或者将变量传递给include语句:

{% extend "base.html" %}
{% include "form.html" with formtitle='Create new MyObject' formbutton="My button title" %}


# form.html
<h1>{% block formtitle %}{{ formtitle }}{% endblock %}</h1>
<form method="post" action="">
  {% csrf_token %}

  [stuff]
  <button type="submit">{% block formbutton %}{{ formbutton }}{% endblock %}</button>
</form>