如何在html中迭代烧瓶输出列表?

时间:2015-12-07 22:41:09

标签: python html flask

我正在编写一个烧瓶应用程序,可以使用以下代码在浏览器上显示结果:

<!DOCTYPE html>
<html>
<head>
<title> {{ title }} </title>
</head>
   <body>
    Enter starter data to execute:
      <form action="/top_hits" method="POST">

        <input type="text" name="text" />
        <input type="submit" value="Submit!" rows="6"/>


      </form>

    {% for q in q1 %}
        ​<textarea form="txtArea" name="q" class="form-control" id="q" rows="100" cols="60" placeholder="{{ q }}" style="font-size: 15pt"></textarea >

    ​{% endfor %}


  </body>
</html>

结果q中的每一个本身都是list of list。如何循环显示单个结果并在textarea中打印单个q的整个结果?

我使用两个for循环尝试了类似下面的内容,但我的逻辑存在缺陷并显示虚假结果(在Flask / Html中完成新手):

{% for q in q1 %}
      {% for q_prime in q %}
    ​    <textarea form="txtArea" name="q_prime" class="form-control" id="q_prime" rows="100" cols="60" placeholder="{{ q_prime }}" style="font-size: 15pt"></textarea >
      {% endfor %}
​{% endfor %}

我附上了两张截图,以便更清楚:

  1. 这是我显示整个列表,即只使用1 for循环: enter image description here

  2. 这是我通过第二个for循环迭代的时候: enter image description here

  3. 所以基本上第一个屏幕截图的结果集会打印在不同的textarea中,而我希望特定输出列表的内容包含在各自的textarea中

1 个答案:

答案 0 :(得分:0)

你可以用两种方式做到这一点:

1.在后端中列出您的列表并使用格式化结果呈现模板。

2.使用jinja2模板过滤器

@app.template_filter('instead_loop')
def reverse_filter(s):
    final_str = ''
    for i in s:
        for _i in i:
            final_str += str(_i) + ', '
    return final_str

然后在模板中:

<!DOCTYPE html>
<html>
<head>
<title>fuck</title>
</head>
    <body>

    <textarea form="txtArea" name="q" class="form-control" id="q" rows="100" cols="60" placeholder="{{ q1 | instead_loop }}" style="font-size: 15pt"></textarea>


    </body>
</html>