0

Djangoフォームのジレンマがあります。テンプレートでフォームをレンダリングするとき、私は通常、form.as_p アノテーションを使用する代わりに、フォーム フィールドを個別に出力することを好みます。ただし、私が取り組んでいるフォームには、未知の回数繰り返される一連のフィールドがあります。たとえば、編集中の項目が 3 つある場合、フィールドは次のようになります。

field_name_1
field_email_1

field_name_2
field_email_2

field_name_3
field_email_3

しかし、アイテムの数は事前にわかりません。これを解決するために、 init関数のループでフィールドを作成していますが、問題はありません。しかし、各フィールドの名前全体がわからないため、テンプレートでフィールドを個別に印刷する方法がわかりません。これが私の唯一の問題である場合は、form.as_p 構文を使用できます。大したことではありません。しかし、結果が次のようになるように、各フィールド セットの先頭にいくつかの html を追加したいとも考えています。

値 1 を追加:
field_name_1
field_email_1

値を追加 2:
field_name_2
field_email_2

値 3 を追加:
field_name_3
field_email_3

ただし、Drupal フォームの #markup と同様に、Django コードのフォームに任意の html を挿入する方法は見つかりませんでした。そう:

  1. テンプレートに追加の html を入れることができるように、フィールドを個別に印刷する方法はありますか? (ここで欠けているのは正確な構文です)
  2. そうでない場合、追加の html をフォームに挿入するにはどうすればよいですか?
4

1 に答える 1

0

テンプレートで次のようなことを意味しますか?:

{% for field in form %}
<div class="fieldWrapper">
    {{ field.errors }}
    {{ field.label_tag }}: {{ field }}
</div>
{% endfor %}

(Django ドキュメントから: https://docs.djangoproject.com/en/dev/topics/forms/?from=olddocs#looping-over-hidden-and-visible-fields )

次のようなヘッダーをレンダリングできます。値を追加 {{forloop.counter}}:

于 2012-08-14T11:32:09.920 に答える