Поскольку весь цикл for находится внутри тега <tr>
, который приводит к отображению всего в одной строке.
Проблема связана с вашим HTML-кодом.
Поместите эти <tr>
теги внутрь цикла for.
<table style="height: 200px;" width="200">
<tbody>
{% for x in result %}
<tr> {## Here ##}
<td style="width: 190px;"><a href="/get_asin/{{ x['asin'] }}" target=_blank><img src ="{{ x['product_image'] }}"></a></td>
<td><a href="/get_asin/{{ x['asin'] }}" target=_blank>{{ x['product_name'] }}</a><br></td>
<td><a href="/get_asin/{{ x['asin'] }}" target=_blank>{{ x['TLC'] }}</a><br></td>
</tr> {## And Here ##}
{% endfor %}
</tbody>
</table>
Я отредактировал ответ в соответствии с вашим комментарием.
Редактировать: я запустил следующий код, и он отображает все в хорошо отформатированной таблице, попробуйте запустить его один раз (у вас может быть несколькоошибка в app.py файла index.html, как это обычно происходит):
app.py:
from flask import Flask, render_template
app = Flask(__name__)
result = [{'a': 'a', 'b': 'b'}, {'a': 'aa', 'b': 'bb'}]
@app.route("/")
def index():
return render_template("index.html", result=result)
app.run()
templates / index.html:
<table style="height: 200px;" width="200">
<tbody>
{% for x in result %}
<tr> {## Here ##}
<td style="width: 190px;">{{ x["a"] }}<br></td>
<td>{{ x["b"] }}<br></td>
</tr> {## And Here ##}
{% endfor %}
</tbody>
</table>
Источник сгенерированногоHTML:
<table style="height: 200px;" width="200">
<tbody>
<tr>
<td style="width: 190px;">a<br></td>
<td>b<br></td>
</tr>
<tr>
<td style="width: 190px;">aa<br></td>
<td>bb<br></td>
</tr>
</tbody>
</table>