Django 模板 - p 标签无故关闭
Django template - p tag is closed for no reason
我正在尝试详细说明 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 中初始化表单。
请参阅以下示例:
<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>
HTML 不允许 p
元素中的 ul
这样的块元素。因此,当您的字段出现错误时(使用 ul
呈现),您的浏览器会帮助关闭 p
以使其有效。 (您正在查看的是浏览器的 DOM 表示,而不是实际呈现的 HTML,它不包含神奇的关闭元素:请执行 "view source" 以查看。)
您应该将错误标记移出 p
。如果愿意,您可以将整个内容包装在 div
.
之类的东西中
我正在尝试详细说明 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 中初始化表单。 请参阅以下示例:
<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>
HTML 不允许 p
元素中的 ul
这样的块元素。因此,当您的字段出现错误时(使用 ul
呈现),您的浏览器会帮助关闭 p
以使其有效。 (您正在查看的是浏览器的 DOM 表示,而不是实际呈现的 HTML,它不包含神奇的关闭元素:请执行 "view source" 以查看。)
您应该将错误标记移出 p
。如果愿意,您可以将整个内容包装在 div
.