2016-05-05 3 views
0

я использовал следующий jinja2 код для отображения переменных в виде HTML выберите из списка в Python 3:Jinja2 делает пустые элементы HTML

<select name="update_id" id="update_id"> 
    {% for id in ids %} 
    <option value="{{ ids[id] }}">{{ ids[id] }}</option> 
    {% endfor %} 
</select> 

Результирующий HTML является:

<select name="delete_id" id="delete_id">     
    <option value="2">2</option> 
    <option value="11">11</option> 
    <option value=""></option> 
    <option value=""></option> 
    <option value=""></option> 
</select> 

Я бы хотел, чтобы выбранная форма включала каждый идентификатор в список в качестве опции. Список, который я использовал, был следующим:

ids = [1, 2, 11, 12, 13] 

Все элементы в списке представляют собой целые объекты. У меня есть Jinja2, чтобы отобразить весь список на странице с помощью оператора if, поэтому проблема возникает только в цикле for.

1 Вот скриншот отображаемого списка с использованием операторов if (синий список) и отображаемых элементов с использованием цикла for (оранжевые цифры). Оранжевые цифры точно такие же, как в форме выбора.

ответ

0

Проблема с вашим кодом <option value="{{ ids[id] }}">{{ ids[id] }}</option>, он начинает принимать элементы из списка наподобие ids[1],ids[2],ids[11],ids[12],ids[13]. Вы ссылаетесь на номера индексов ids[1] означает второй элемент в списке идентификаторов и здесь, в вашем случае, что 2. замените это <option value="{{ id }}">{{ id }}</option>. Или, если вы хотите, чтобы значения быть в диапазоне, то вы должны попробовать использовать tmplist=range(0,len(ids)) и использовать {% for id in tmplist %}

<option value="{{ ids[id] }}">{{ ids[id] }}</option>

+0

Большое спасибо за то, что именно мне нужно. –

+0

счастлив, что смогу помочь :) –