2

在阅读了Docs{{ form.as_p }}并使用 Django 表单很长一段时间后,对我来说,在模板中呈现 Django 表单似乎很标准。不过,我的情况有点不同。

我的表单中有 2 个复选框:

class FORM(forms.Form):

field_a = forms.BooleanField(initial=False, label =('FIELD-A'))
field_b= forms.BooleanField(initial=True, label=('FIELD-B'))

我像大多数人一样从视图中传递表单对象:

    context = {
        'FORM':FORM(),

}
return render_to_string(template, context)

我正在尝试使用基本的“如果”逻辑来查看是否应该显示一个或两个字段。我知道大多数人会说“只需将它们命名为两个单独的表格”,但出于组织目的,我更愿意将它们保留为一个表格。

问题

        {% if BoolValue' %}
            <form action='' method='post'>
                 {{ FORM.field_a }}
            </form>
        {% endif %}

这仅返回 field,而不是 field label (所以只是一个复选框)。离开Docs和其他 StackOverflow Questions,这应该显示整个表单,包括标签,但它没有。

但是,这些方法仍然有效:

方法一

            {% for field in FORM%}
        <div class="form">
        {{ field.label_tag }} {{ field }}
        </div>
        {% endfor %}

这将显示两个表单及其各自的标签和字段输入(复选框)

方法二

{{ FORM.as_p }}

呈现整个表单的传统方式将同时显示字段和标签,它在样式和格式上几乎与方法 1 相同。

编辑 方法 3

{{ FORM.field_a.label_tag }} {{ Form.field_a }}

这将显示标签和表单域。一种可能的解决方法,但我正在寻找为什么 {{ Form.field_a }} 不能自行工作

所以...

为什么我不能用各自的标签呈现那个单独的表单?可以这么说,我不是在寻找解决方法,因为我希望这两个领域都属于那种形式。有任何想法吗?

4

1 回答 1

4

你试过{{ FORM.field_a }} {{FORM.field_a.label_tag}}吗?

于 2013-06-21T15:51:31.830 回答