我试图详细说明 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 中的东西不在 p 中。
可能是什么原因造成的?我已经检查并三次检查,我知道我没有遗漏任何结束标签。
最佳答案
HTML 不允许像 ul
这样的 block 元素位于 p
元素中。因此,当您的字段出现错误并使用 ul
呈现时,您的浏览器会帮助关闭 p
以使其有效。 (您看到的是浏览器的 DOM 表示,而不是实际渲染的 HTML,它不包含 magic close 元素:执行“查看源代码”即可看到这一点。)
您应该将错误标记移出p
。如果您愿意,您可以将整个内容包装在 div
之类的内容中。
关于python - Django模板-p标签无故关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28246304/