ネストされたブロックとJinjaテンプレートブロックのforループ
Aug 23 2020
Jinjaテンプレートブロックのセットアップでネストされたブロックとforループを使用しようとしています。
{% block main %}
<table>
<tr>
<td>user id</td>
<td>user sec level</td>
</tr>
{% block main_nested_b scoped %}
{%
for user in list_users:
t_id_user = str(user[0][0])
t_sec_level = str(user[2][0])
%}
<tr>
<td>
<a href='/usersEdit?id_user={{ t_id_user }}' class='onwhite'>edit</a>
</td>
</tr>
{% endfor %}
{% endblock main_nested_b %}
{% endblock main %}
</table>
エラーメッセージ:
jinja2.exceptions.TemplateSyntaxError: expected token 'end of statement block', got 't_id_user'
助けて?
回答
2 MartijnPieters Aug 23 2020 at 13:54
Jinja構文をPython構文として扱うことはできません。それは同じことではありません。forタグを割り当て(set)タグとは別にしてください:
{% for user in list_users %}
{% set t_id_user = user[0][0] %}
{% set t_sec_level = user[2][0] %}
構文の:
最後にもがないことに注意してくださいfor ... in ...
!またstr()
、ここで呼び出す必要はありません。文字列に変換するには、Jinjaにお任せください。どこで使用して{{ t_id_user }}
も{{ t_sec_level }}
、値はとにかく文字列に変換されます。
完全なテンプレートは次のとおりです。
<table>
{% block main %}
{% block main_nested_b scoped %}
{% for user in list_users %}
{% set t_id_user = user[0][0] %}
{% set t_sec_level = user[2][0] %}
<tr>
<td>
<a href='/usersEdit?id_user={{ t_id_user }}' class='onwhite'>edit</a>
</td>
</tr>
{% endfor %}
{% endblock main_nested_b %}
{% endblock main %}
</table>