【问题标题】:In Flask, how do I print the python list to Jinja template?在 Flask 中,如何将 python 列表打印到 Jinja 模板?
【发布时间】:2017-09-08 00:15:49
【问题描述】:

我有一些用于计算笛卡尔积的列表:

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.product(a,b,c,d,e))
   return render_template('output.html',cpl = cpl)

输出.html:

{% for cp in cpl %}
  <p>{{ cp }} </p>
{% endfor %}

但是,我返回一个空白屏幕。

当我在 Jupyter 中运行相同的 python 代码时,我会返回列表。

我可能在哪里遇到问题?

【问题讨论】:

  • 这可能只是您当前设置的问题。我在本地运行了你的代码,得到了预期的输出。

标签: python-3.x list loops flask jinja2


【解决方案1】:

cpl 返回一个元组列表,它不是单个值。也许这让金贾感到困惑。您可以创建一个嵌套的 for 循环,或者在渲染模板之前尝试将这些元组转换为字符串。

例如,尝试添加

strings = [str(c) for c in cpl]
return render_template("output.html", cpl=strings)

【讨论】:

  • 怀疑。该设置对我来说很好,可以生成元组字符串表示。
  • 我尝试转换,但没有帮助。我将在哪里创建一个嵌套循环 - 在 python 或 jinja 中?
  • 如果设置对@alecxe 工作正常并且转换没有帮助,那么我会仔细检查其他所有内容。
  • @minterm 当我尝试分别传递其中一个列表时,例如列表“a”(将render_template中的参数更改为'a = a'),它确实显示了jinja中的内容,但没有cpl
  • @FeyziBagirov 尝试使用我刚刚添加的字符串转换来呈现它。告诉我进展如何。
【解决方案2】:

有效的解决方案是:

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)

输出.html:

{% for cp in cpl %}
<p> {{ cp }} </p>
{% endfor %}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    相关资源
    最近更新 更多