Django表格有效,即使模板

时间:2018-02-02 09:15:33

标签: django django-forms

我使用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它也是有效的。

为什么会这样?

除了在我的wikiFormblank=False中填写字段之外,还有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

因为表格在那里。也许你的模板中有一点错误(如果你直接从你的机器上复制了这个),

{{ wikiFrom|crispy }}

当你使用香脆的表格时,你实际上使用的是具有清脆布局的django表格。因此,在代码中的某个位置,您必须实例化实际的表单类,就在那里创建了表单。由于您在模板中的条件,它只是没有渲染。此外,创建字段blank=True允许表单在其中没有任何内容时将字段视为有效。如果它是必填字段并且您传递了空白字符串,则验证将失败。