1

テンプレートに次のコードがあります。

<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に配置し、2 番目の呼び出しはpにulを配置する代わりに2 つのpタグを作成するのでしょうか?

4

1 に答える 1

2

これを行っているのは Django ではなく、ブラウザが無効なマークアップと見なすものを「正規化」しています。HTML 仕様によると、<p>タグにタグを含めることはできません<ul>

リスト要素 (特に ol および ul 要素) は、p 要素の子になることはできません。

仕様では、リストを開始する前に段落を閉じることを推奨しています: <p>...</p><ul>...</ul><p>...</p>(これはまさにブラウザーが行ったことです) か、<div>代わりに<p>.

テストするにwgetは、テキスト エディターを使用してページをダウンロードし、開いてみてください。生成されたマークアップは、Django にレンダリングするように指示したものであり、余分なタグは追加されていないことがわかります。

于 2013-06-21T03:49:09.333 に答える