Djangoでhidden属性でテンプレート出力する

概要

  • Djangoのテンプレートで、hiddenのフィールドは項目名も表示しないようにしたい
  • 入力欄をas_hiddenで出力すると、項目名は出てしまう。
    • テンプレートでフィールドを出力する際、直書きせずにfor文で回して取得している場合を想定
  • is_hiddenメソッドを使って判定する

forms.py

class BuyerUserSignupForm(SignupForm):
    userType = forms.IntegerField(initial="1", widget=forms.HiddenInput)

template

  {% for field in form %}
      <div class="field">
          {% if not field.is_hidden %}
            {# 通常フィールドはラベルと入力枠を出力 #}
            {{ field.label_tag }}
            {{ field }}
            {% if field.help_text %}
                <span class="helptext">{{ field.help_text }}</span>
            {% endif %}
          {% else %}
            {# hidden属性で出力 #}
            {{ field.as_hidden }}
          {% endif %}
          {% for error in field.errors %}
            {{error}}
          {% endfor %}
          </div>
  {% endfor %}

参考

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です