Каков правильный способ предварительного выбора тега опции формы в Django?

#django #python-3.x #drop-down-menu #option

#python #python-3.x #django #html-выберите

Вопрос:

Я использую Django и Python 3.7. Я хочу создать меню ВЫБОРА в своем шаблоне, поэтому я попробовал это…

     <select id="website_id" name="website_id">
        <option value="">Select a website</option>
{% for website in websites %}
        <option value="{{ website.id }}" {{ 'selected' if website_id == website.id else '' }}>{{ website.path }}</option>
{% endfor %}
    </select>
  

но я получаю эту ошибку

 Could not parse the remainder: ' if website_id == website.id else ''' from ''selected' if website_id == website.id else '''
  

Он задыхается от моего выражения «если». Какой предпочтительный способ установить атрибут «выбранный» тега опции?

Ответ №1:

Действительно правильный способ — использовать форму Django. Но если вы настаиваете на том, чтобы делать это вручную, вам нужен тег if

  {% if website_id == website.id %} selected {% endif %}
  

Комментарии:

1. Несмотря на то, что в моей форме есть только это одно поле, я думаю, было бы очень полезно узнать больше о формах Django, поэтому после того, как я заставлю это работать, возможно, я смогу вернуться и сделать это правильно, что я бы предпочел.

Ответ №2:

Правильный синтаксис выглядит так:

 {% if CONDITION %}A{% endif %}
  

Итак, в вашем случае мы бы реализовали это следующим образом:

     <select id="website_id" name="website_id">
        <option value="">Select a website</option>
        {% for website in websites %}
            <option value="{{ website.id }}" {% if website_id == website.id %}selected{% endif %}>{{ website.path }}</option>
        {% endfor %}
    </select>
  

Ответ №3:

 <select name="qf">
    <option value="10th" {% if '10th' %} selected {% endif %}>10th</option>
    <option value="12th" {% if '12th' %} selected {% endif %}>12th</option>
</select>