Предварительно выбранный в HTML на основе контекста в шаблоне django

#python #html #django #django-templates

#python #HTML #django #django-шаблоны

Вопрос:

Мне нужно отобразить поле ввода выбора с фиксированной опцией

 <select multiple>
                        <option > area</option>
                        <option > city</option>
                        <option > project</option>
                        <option > address</option>
                        <option > item3</option>
                        <option > item4</option>
                        <option > anotheritem</option>
                        <option > otheritem</option>
                        <option > lastitem</option>
                        <option > itemrandom</option>
</select>
 

И я передаю список в контексте, в котором будет элемент как (область, адрес, город) один или несколько или все.
Я хочу, чтобы опция была предварительно выбрана, если какое-либо из значений параметров присутствует в переданном списке контекста.

HTML-страница будет отображаться из представления django. Использование формы не является предпочтительным.

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

1. Вы также передаете параметры из серверной части или они жестко запрограммированы, и в контексте будут передаваться только выбранные значения?

2. Они жестко запрограммированы.

Ответ №1:

 <select multiple>
  <option value="area" {% if "area" in selected_values %} selected {% endif %}> area</option>
  <option value="city" {% if "city" in selected_values %} selected {% endif %}> city</option>
  <option value="project" {% if "project" in selected_values %} selected {% endif %}> project</option>
  <option value="address" {% if "address" in selected_values %} selected {% endif %}> address</option>
  <option value="item3" {% if "item3" in selected_values %} selected {% endif %}> item3</option>
  <option value="item4" {% if "item4" in selected_values %} selected {% endif %}> item4</option>
  <option value="anotheritem" {% if "anotheritem" in selected_values %} selected {% endif %}> anotheritem</option>
  <option value="otheritem" {% if "otheritem" in selected_values %} selected {% endif %}> otheritem</option>
  <option value="lastitem" {% if "lastitem" in selected_values %} selected {% endif %}> lastitem</option>
  <option value="itemrandom" {% if "itemrandom" in selected_values %} selected {% endif %}> itemrandom</option>
</select>
 

Приведенный выше фрагмент должен выполнить эту работу, было бы лучше, если бы вы передали список всех параметров также из серверной части.
В этом случае приведенный ниже фрагмент выполнит эту работу;

 <select multiple>
  {% for option in options %}
  <option value="{{option}}" {% if option in selected_values %} selected {% endif %}> {{option}}</option>
  {% endfor %}
</select>
 

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

1. {% if "area" in selected_values %} selected_values будет списком, поэтому код не будет работать, поскольку в шаблоне django мы не можем проверить значение в списке, пожалуйста, поправьте меня, если я ошибаюсь.

2. selected_values будет списком значений, которые уже выбраны, например; selected_values = [«area», «itemrandom», «city», «project»]