我的模板中有以下代码:
<p>{{ form.end_at }}</p>
<p>{{ form.weekdays }}</p>
呈现如下:
<p><input type="text" name="end_at"></p>
<p></p>
<ul>
<li>..</li>
..
</ul>
<p></p>
那么为什么第一个调用会将输入放在 p 中,第二个调用会创建两个 p 标记,而不是放置 p 中的
。答案 0 :(得分:2)
这不是Django这样做的,它的浏览器“规范化”它所认为的无效标记。根据{{3}},<p>
代码不能包含<ul>
代码:
列表元素(特别是ol和ul元素)不能是子元素 p元素。
规范建议在开始列表前关闭段落:<p>...</p><ul>...</ul><p>...</p>
(这正是浏览器所做的)或使用<div>
代替<p>
。
要测试,尝试使用wget
下载页面并在文本编辑器中打开 - 您将看到生成的标记是您告诉Django呈现的内容,没有添加额外的标记。