Django模板 - p标签无缘无故关闭

时间:2015-01-30 23:27:08

标签: python html django

我正在尝试详细说明一个django form.as_p(),以便我可以自定义几个字段,但在大多数情况下,我只需要简单的as_p渲染。因此,在循环遍历字段的过程中,我大部分都是这样:

<p>
    {{ field.errors }}
    {{ field.label_tag }}
    {{ field }}
</p>

但是偶尔,我的html看起来像这样:

<p>
                    </p>
<ul class="errorlist">
    <li>This field is required.</li>
</ul>
<label for="id_name">Name</label>
<input id="id_name" maxlength="200" name="name" type="text" autocomplete="off">
<p></p>

那些无关的p和我想要的东西不是p的。

可能导致这种情况的原因是什么?我检查并三重检查,我知道我没有错过任何结束标签。

2 个答案:

答案 0 :(得分:2)

HTML不允许ul元素中的p等块元素。因此,如果您的字段出现错误(使用ul呈现),则您的浏览器会有效关闭p以使其有效。 (您正在查看的是浏览器的DOM表示,而不是实际呈现的HTML,它不包含神奇的关闭元素:执行&#34;查看源代码&#34;以查看此内容。 )

您应该将错误标记移出p。如果你愿意,你可以将整个事情包裹在div

之类的内容中

答案 1 :(得分:0)

看起来你没有在html中初始化你的表单。 请参阅以下示例:

<form method="post" action="." enctype="multipart/form-data">
    {% csrf_token %}
    {% for field in my_form %}
    <p>{{ field.label_tag }} {{ field }}</p>
    {% endfor %}
    <input type="submit" value="Submit Form" />
</form>