在django模板段落中渲染表现得很奇怪

时间:2013-06-21 03:34:41

标签: django templates django-forms django-templates rendering

我的模板中有以下代码:

<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 中的

1 个答案:

答案 0 :(得分:2)

这不是Django这样做的,它的浏览器“规范化”它所认为的无效标记。根据{{​​3}},<p>代码不能包含<ul>代码:

  

列表元素(特别是ol和ul元素)不能是子元素   p元素。

规范建议在开始列表前关闭段落:<p>...</p><ul>...</ul><p>...</p>(这正是浏览器所做的)或使用<div>代替<p>

要测试,尝试使用wget下载页面并在文本编辑器中打开 - 您将看到生成的标记是您告诉Django呈现的内容,没有添加额外的标记。