我正在构建桌面应用UI,并且我试图将所有内容移到Flask中,因此我可以在html/css/boostrap
中展示所有内容。
但是下面的代码不起作用。
如何在found.productId
上显示ali.html
和其余循环?
app.py
from aliexpress_api_client import AliExpress
@app.route('/ali')
def ali():
aliexpress = AliExpress('1234', 'bazaarmaya')
data = aliexpress.get_product_list(['productId', 'productTitle', 'salePrice', 'originalPrice', 'imageUrl'],
keywords="shoes", pageSize='40')
for product in data['products']:
productId = product['productId']
productTitle = product['productTitle']
salePrice = product['salePrice']
originalPrice = product['originalPrice']
imageUrl = product['imageUrl']
founds = print(productId, productTitle, salePrice, originalPrice, imageUrl)
if founds == founds:
return render_template('ali.html', founds=founds)
return render_template('ali.html')
ali.html
{% extends 'layout.html' %}
{% block body %}
<table>
<tr>
{% for found in founds %}
<td>{{found.productId}}</td>
<td>{{found.productTitle}}</td>
<td>{{found.salePrice}}</td>
<td>{{found.originalPrice}}</td>
<td>{{found.imageUrl}}</td>
{% endfor %}
</tr>
</table>
{% endblock %}
答案 0 :(得分:0)
第一个问题是print()
将返回 None
。所以:
founds = print(productId, productTitle, salePrice, originalPrice, imageUrl)
等同于founds = None
。基本没用。
所以,首先要做的是给founds
一个结构。您的选项基本上是dict
和list
。在您的示例中,列表最简单(但不一定是您的实际代码):
<强> app.py 强>
from aliexpress_api_client import AliExpress
@app.route('/ali')
def ali():
aliexpress = AliExpress('1234', 'bazaarmaya')
data = aliexpress.get_product_list(['productId', 'productTitle', 'salePrice', 'originalPrice', 'imageUrl'],
keywords="shoes", pageSize='40')
for product in data['products']:
productId = product['productId']
productTitle = product['productTitle']
salePrice = product['salePrice']
originalPrice = product['originalPrice']
imageUrl = product['imageUrl']
founds = [productId, productTitle, salePrice, originalPrice, imageUrl]
return render_template('ali.html', founds=founds)
注意:这里有两个问题。 for
循环将覆盖每个循环上的数据,因此您可能需要一个字典,但您需要为其提供唯一键。或者您事先定义一个列表并在循环中应用它。 此示例仅为您提供循环中的最后一项,由您决定处理。
然后:
<强> ali.html 强>
{% extends 'layout.html' %}
{% block body %}
<table>
<tr>
{% for found in founds %}
<td>{{found}}</td>
<td>{{found}}</td>
<td>{{found}}</td>
<td>{{found}}</td>
<td>{{foundl}}</td>
{% endfor %}
</tr>
</table>
{% endblock %}
如果您将字典传递给模板并希望按键访问,则可以使用.
表示法。但是首先要解决其他问题所以这个答案可能会导致进入太多深度的风险。 jinja2
语法(在模板中)与常规python非常相似。