Как вставить атрибуты поля формы Django в HTML-код?

Я пытаюсь вставить {{field.id}} в атрибуты ввода HTML, но это не работает. Как правильно это сделать?

<input type="text" class="form-control" id="{{field.id}}">

Я также попробовал:

<input type="text" class="form-control" id={{field.id}}>

Вот мой полный код:

{% for field in wizard.form %}


   <div class="row">
    <label class="col-xs-4" for={{field.id_for_label}}>{{ field.label }}</label>
      <div class="col-xs-2">   


       <div class="form-group">
            <input type="text" class="form-control" id="{{field.id}}">
            {{field.id}}




        </div>


      </div>
    </div>
  {% endfor %}

2 ответа

Решение

Вы можете получить сгенерированный идентификатор поля формы следующим образом:

{{ field.auto_id }}

Это дубликат /questions/34993691/kak-poluchit-identifikator-polya-formyi-v-django/34993709#34993709

Изменить: Хотя я не понимаю, почему вы пытаетесь поставить значение идентификатора в качестве атрибута имени. Это приведет к тому, что визуализированный HTML будет

<input name="id_field_name" />

Я бы позаботился об этом автоматически, если бы использовал тег шаблона поля.

Вместо этого я бы попробовал другой подход, чем вы используете, используя django_widget_tweaks для программного добавления атрибутов.

Например, в вашем шаблоне...

{% for field in wizard.form %}
   <div class="row">
    <label class="col-xs-4" for={{field.auto_id}}>{{ field.label }}</label>
      <div class="col-xs-2">   
       <div class="form-group">
            {{field|attr:'class:form-control}}
        </div>
      </div>
    </div>
  {% endfor %}

Это автоматически сгенерирует ввод для каждого поля с class='form-control' как часть тега. Идентификатор / имя будут автоматически обработаны путем рендеринга field,

Другие вопросы по тегам