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.

之类的东西中