2016-05-05 7 views
0

ich folgenden Jinja2 Code verwendet habe Variablen in ein HTML-Auswahl-Formular aus einer Liste in Python zu machen 3:Jinja2 macht leere HTML-Elemente

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

Der resultierende HTML ist:

<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> 

Ich möchte, dass das Auswahlformular jede ID als Option in die Liste aufnimmt. Die Liste, die ich verwendete, war diese:

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

Alle Elemente in der Liste sind Integer-Objekte. Ich habe Jinja2, um die ganze Liste in die Seite mit einer if-Anweisung zu rendern, so dass das Problem nur in der for-Schleife auftritt.

1 Hier ist ein Screenshot der gerenderten Liste mit einer if-Anweisung (blaue Liste) und die gerenderten Elemente mit einer for-Schleife (orange Zahlen). Die orange Zahlen sind genau die gleichen, die in der Auswahlform gerendert werden.

Antwort

0

Das Problem mit Ihrem Code ist <option value="{{ ids[id] }}">{{ ids[id] }}</option>, beginnt es Elemente aus der Liste wie ids[1],ids[2],ids[11],ids[12],ids[13]. Sie beziehen sich auf die Indexnummern ids[1] bedeutet das zweite Element in der IDs-Liste und hier in Ihrem Fall ist das 2. ersetzen Sie diese <option value="{{ id }}">{{ id }}</option>. Oder wenn Sie die Werte wollen in einem Bereich sein, dann sollten Sie versuchen, tmplist=range(0,len(ids)) und verwenden {% for id in tmplist %}

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

+0

Vielen Dank für das, genau das, was ich brauchte. –

+0

glücklich ich könnte helfen :) –