Python 3.x 在Flask中,如何将python列表打印到Jinja模板?
我有几个用于计算笛卡尔积的列表: python.py:Python 3.x 在Flask中,如何将python列表打印到Jinja模板?,python-3.x,list,loops,flask,jinja2,Python 3.x,List,Loops,Flask,Jinja2,我有几个用于计算笛卡尔积的列表: python.py: @app.route('/output', methods = ['GET','POST']) def output(): a = ['one','two'] b = ['three','four'] c = ['five'] d = ['six','seven','eight'] e = ['nine','ten','eleven'] cpl = list(itertools.produc
@app.route('/output', methods = ['GET','POST'])
def output():
a = ['one','two']
b = ['three','four']
c = ['five']
d = ['six','seven','eight']
e = ['nine','ten','eleven']
cpl = list(itertools.product(a,b,c,d,e))
return render_template('output.html',cpl = cpl)
output.html:
{% for cp in cpl %}
<p>{{ cp }} </p>
{% endfor %}
{% for cp in cpl %}
<p> {{ cp }} </p>
{% endfor %}
{%用于cpl%中的cp}
{{cp}}
{%endfor%}
然而,我被返回一个空白屏幕
当我在Jupyter中运行相同的python代码时,会返回列表
我哪里会有问题 cpl返回一个元组列表,它不是单个值。也许这让Jinja很困惑。可以创建嵌套for循环,也可以在呈现模板之前尝试将这些元组转换为字符串 例如,尝试添加
strings = [str(c) for c in cpl]
return render_template("output.html", cpl=strings)
有效的解决方案是: python.py
@app.route('/output', methods = ['GET','POST'])
def output():
a = ['one','two']
b = ['three','four']
c = ['five']
d = ['six','seven','eight']
e = ['nine','ten','eleven']
newArray = []
newArray = [a, b, c, d, e]
cpl = list(itertools.product(*[i for i in newArray if i != []]))
return render_template('output.html',cpl = cpl)
output.html:
{% for cp in cpl %}
<p>{{ cp }} </p>
{% endfor %}
{% for cp in cpl %}
<p> {{ cp }} </p>
{% endfor %}
{%用于cpl%中的cp}
{{cp}}
{%endfor%}
。这个设置对我来说很好,生成了元组字符串表示。我尝试了转换,但没有帮助。在python或jinja中,我应该在哪里创建嵌套循环?如果@alecxe的设置工作正常,并且转换没有帮助,那么我会仔细检查其他所有内容。@minterm当我尝试单独传递其中一个列表时,例如列表“a”(将render_模板中的参数更改为“a=a”),它会显示jinja中的内容,但不是cpl@FeyziBagirov尝试使用我刚才添加的字符串转换来呈现它。让我知道进展如何。这可能只是您当前设置的问题。我在本地运行了您的代码,得到了预期的输出。