在阅读了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 }} 不能自行工作
所以...
为什么我不能用各自的标签呈现那个单独的表单?可以这么说,我不是在寻找解决方法,因为我希望这两个领域都属于那种形式。有任何想法吗?