我使用CrispyForms在prefix=name
模板中使用单个提交按钮有多个表单。
Check if a form exists or is rendered in Template. Django
我的模板中有以下代码
{% extends BASE_TEMPLATE %}
{% load crispy_forms_tags %}
{% block title %}<h2>New Thread</h2>{% endblock %}
{% block content %}
<div class="col-md-6">
<form method="post" accept-charset="utf-8">{% csrf_token %}
{{ threadForm|crispy }}
{{ postForm|crispy }}
{% if SHOW_WIKI %}
{{ wikiFrom|crispy }}
{% endif %}
<input type="submit" class="btn btn-primary btn-sm" value="Submit"/>
</form>
</div>
{% endblock %}
请注意if
条件。我确信在某些情况下表单不会呈现,表单仍然有效
WikiForm呈现的唯一字段为blank=True
。
当我在代码中执行wikiForm.is_valid()
时会发生什么,即使它没有在模板中显示,根据Django它也是有效的。
为什么会这样?
除了在我的wikiForm
到blank=False
中填写字段之外,还有办法解决这个问题吗?
答案 0 :(得分:2)
因为表格在那里。也许你的模板中有一点错误(如果你直接从你的机器上复制了这个),
{{ wikiFrom|crispy }}
当你使用香脆的表格时,你实际上使用的是具有清脆布局的django表格。因此,在代码中的某个位置,您必须实例化实际的表单类,就在那里创建了表单。由于您在模板中的条件,它只是没有渲染。此外,创建字段blank=True
允许表单在其中没有任何内容时将字段视为有效。如果它是必填字段并且您传递了空白字符串,则验证将失败。