5

私は通常それをシンプルに保ち、テンプレートで次のフォーム構文を使用します。

<div>
       <div>{{form.title.label}}:</div>
       <div>{{form.title}}</div>
</div>

このアプローチの問題は、html出力のセマンティクスが悪いことです。

<div>
    <div>Title:</div>
    <div><input id="id_form-title" type="text" maxlength="30" name="form-title"></div>
</div>

正しいはずです:

<div>
    <label for="id_form-title">Title</label>
    <input id="id_form-title" type="text" maxlength="30" name="form-title">
</div>

これを自動的に行うためのdjango組み込みタグはありますか、それともこのように自分で手動で行う必要がありますか?

<div>
    <label for="id_form-title">{{form.title.label}}</label>
    {{form.title}}
</div>
4

2 に答える 2

3

labelフィールドを 1 つずつ出力しても、適切に構築された要素に自動的にアクセスできないのは本当に厄介です。これを行うform.as_pと、フィールドとラベルが正しく生成されますが、フォーム レイアウトに対するすべての制御が失われます。

ただし、フィールド情報を使用してかなり簡単にラベル タグを作成できます。

<label for="{{ field.auto_id }}">{{ field.label }}</label>
{{ field }}

簡単に再利用できるように、これをテンプレート タグに入れることができます。

{{ field.errors }}各フィールドに関連付けられたエラーを表示するために追加することも忘れないでください。

于 2012-11-20T14:00:50.183 に答える
2

label_tag を使用すると、適切に構築されたラベル タグが得られます。したがって、 {{form.title.label}} の代わりに {{form.title.label_tag}} を使用する必要があります。これにより、目的の html が生成されます。

于 2012-11-20T17:57:32.877 に答える