阅读Docs后,使用Django表格已经有一段时间了,模板中{{ form.as_p }}
呈现Django表单似乎很标准。但是,我的情况有点不同。
我的表单中有两个复选框:
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”逻辑来查看是否应该显示一个或两个字段。我知道大多数人会说'只要将它们命名为两种不同的形式',但我更愿意将它们作为一种形式用于组织目的。
问题
{% if BoolValue' %}
<form action='' method='post'>
{{ FORM.field_a }}
</form>
{% endif %}
这只返回字段,而不是字段标签(所以只是一个复选框)。离开Docs和其他StackOverflow Questions,这应该显示整个表单,包括标签,但它不会。
然而,这些方法仍然有效:
方法1
{% for field in FORM%}
<div class="form">
{{ field.label_tag }} {{ field }}
</div>
{% endfor %}
这将显示两种形式及其各自的标签和字段输入(复选框)
方法2
{{ FORM.as_p }}
渲染整个表单的传统方式将显示字段和标签,它在样式和格式方面几乎与方法1相同。 的
修改的 方法3
{{ FORM.field_a.label_tag }} {{ Form.field_a }}
这将显示标签和表单字段。可能的解决方法,但我正在寻找为什么{{Form.field_a}}无法自行运作
为什么我不能用相应的标签呈现那个单独的表格?我不是在寻找可以说的工作,因为我希望这两个字段都在那个表格之下。有什么想法吗?
答案 0 :(得分:2)
您是否尝试过{{ FORM.field_a }} {{FORM.field_a.label_tag}}
?