Jinja2/Flask动态变量名更改
Jinja2/Flask dynamic variable name change
我有一个 Flask 方法和 index.html 带有 jinja2 for 循环的片段
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>
您不能在 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
来显示密钥。
我有一个 Flask 方法和 index.html 带有 jinja2 for 循环的片段
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>
您不能在 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
来显示密钥。