【问题标题】:Rendering in django template paragraph behaves weird在 django 模板段落中渲染行为很奇怪
【发布时间】:2013-06-18 02:47:18
【问题描述】:

我的模板中有以下代码:

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

那么为什么第一个调用将 input 放在 p 中,而第二个调用创建两个 p 标签而不是放置 ulp 中也是如此吗?

【问题讨论】:

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


    【解决方案1】:

    这不是 Django 做的,它是浏览器“规范化”了它所看到的无效标记。根据HTML spec&lt;p&gt;标签不能包含&lt;ul&gt;标签:

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

    规范建议在开始列表之前关闭段落:&lt;p&gt;...&lt;/p&gt;&lt;ul&gt;...&lt;/ul&gt;&lt;p&gt;...&lt;/p&gt;(这正是浏览器所做的)或使用&lt;div&gt; 而不是&lt;p&gt;

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-06
      • 1970-01-01
      • 2017-02-04
      • 1970-01-01
      • 1970-01-01
      • 2012-02-14
      • 1970-01-01
      相关资源
      最近更新 更多