Jinja2 / Flask动态变量名称更改

时间:2015-02-05 17:10:35

标签: flask jinja2

我有一个Flask方法和带有jinja2 for loop

的index.html代码段
def recommendations():
    return render_template("index.html", score1='46', score2='12', score3='15', score4='33')

的index.html:

{% for i in range(1,5) %}
   <p> Your score: {{ score1 }}</p>
{% endfor %} 

如何基于循环动态更改乐谱变量的名称,如:

<p> Your score: {{ score1 }}</p>
<p> Your score: {{ score2 }}</p>
<p> Your score: {{ score3 }}</p>
<p> Your score: {{ score4 }}</p>

1 个答案:

答案 0 :(得分:3)

您无法在Jinja2中创建动态变量。您应该使用列表:

return render_template("index.html", scores=['46', '12', '15', '33'])

或字典:

return render_template("index.html", scores={
    'score1': '46', 'score2': '12', 'score3': '15', 'score4': '33'})

并相应地调整你的Jinja2循环来处理它。对于简单的列表:

{% for score in scores %}
   <p> Your score: {{ score }}</p>
{% endfor %} 

对于字典案例,您可以使用排序来设置特定顺序:

{% for score_name, score in scores|dictsort %}
   <p> Your score: {{ score }}</p>
{% endfor %} 

您也可以使用score_name来显示密钥。