Почему это работает, когда я использую целочисленный индекс, но не использую переменную i itterable внутри цикла в jinja
это дает значения none :
{%for i in l%}
<tr>
<td>{{con.hotel.i}}</td>
</tr>
{%endfor%}
пока это работает и дает правильные значения
{%for i in l%}
<tr>
<td>{{con.hotel1.0}}</td>
</tr>
{%endfor%}
Потому что тогда он попытается получить доступ к атрибуту .i
. Если вы напишете .item
, то он сначала попытается получить доступ к .item
, затем к ['item']
и, наконец, к [int('item')]
, так что для .0
это означает, что он попробует .0
, что не удастся, ['0']
, что тоже не удастся, а затем [int('0')]
, который будет использовать первый элемент
Для hotel.i
, он, таким образом, сначала попробует hotel.i
, затем hotel['i']
, и, наконец, попытается преобразовать 'i'
в int
, и все эти попытки будут неудачными.
Попробуйте также [item]
, так как это запутает в случае .item
как атрибут существует.
Для jinja однако, вы можете подписать, так:
{% for i in l %} <tr> <td>{{ con.hotel[i] }}</td> </tr> {% endfor %}