Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django子表单在模板上呈现时不显示标签_Django_Django Forms_Django Templates - Fatal编程技术网

Django子表单在模板上呈现时不显示标签

Django子表单在模板上呈现时不显示标签,django,django-forms,django-templates,Django,Django Forms,Django Templates,在阅读并使用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')) 我像大多数人一样

在阅读并使用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”逻辑来查看是否应该显示一个或两个字段。我知道大多数人会说“只需将它们命名为两个单独的表单”,但我更愿意将它们作为一个表单保存,以便于组织

问题

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

编辑 方法3

这将显示标签和表单字段。一个可能的解决办法,但我正在寻找{Form.field_A}}本身不起作用的原因

所以
为什么我不能用相应的标签呈现单个表单?我不是在寻找一个工作,可以说,因为我希望这两个领域是在同一种形式。有什么想法吗?

你试过
{{FORM.field\u a}}{{FORM.field\u标签}{/code>?

你试过
{{FORM.field\u a}{{FORM.field\u标签}{FORM.field\u标签}}{/code>吗?

你试过
{{FORM FORM field field a.field标签}{code}{?有效吗?确认了。上面的方法确实有效。我将把它作为答案:这是一种正常的、记录在案的行为。请参阅表单文档的“在表单字段上循环”部分:。呈现的表单字段只是字段本身,而不是它的任何支持属性,如标签、帮助文本或错误。所有这些都可以通过文档化的属性获得。您实际上不需要迭代-您可以按名称访问字段,如您接受的答案中所示,或通过在该链接中迭代
form.fields
。关键是,给定一个字段对象,无论是从迭代还是从命名访问,您都可以使用它的属性,如
label\u tag
。您是否尝试过
{FORM.field\u a}}{{FORM.field\u a.label\u tag}
?有效吗?确认了。上面的方法确实有效。我将把它作为答案:这是一种正常的、记录在案的行为。请参阅表单文档的“在表单字段上循环”部分:。呈现的表单字段只是字段本身,而不是它的任何支持属性,如标签、帮助文本或错误。所有这些都可以通过文档化的属性获得。您实际上不需要迭代-您可以按名称访问字段,如您接受的答案中所示,或通过在该链接中迭代
form.fields
。关键是,给定一个字段对象,无论是来自迭代还是来自命名访问,都可以使用其属性,如
label\u tag
。这是最好的解决方法。正如@PeterDeGlopper在上面所评论的,这似乎是Django在迭代表单对象时需要的。这是最好的解决方法。正如@PeterDeGlopper在上面所评论的,这似乎是Django在迭代表单对象时使用的。
        {% if BoolValue' %}
            <form action='' method='post'>
                 {{ FORM.field_a }}
            </form>
        {% endif %}
            {% for field in FORM%}
        <div class="form">
        {{ field.label_tag }} {{ field }}
        </div>
        {% endfor %}
{{ FORM.as_p }}
{{ FORM.field_a.label_tag }} {{ Form.field_a }}