我有一个脚本,用于烧瓶应用程序,另一个用于发送后处理请求的条形码扫描仪脚本。
flask应用程序会接收它,并将JSON解码为我想在html上显示的数据。
但是如何将它们加载到html中?这是flask应用收到请求时的日志:
Fissan Foot Powder
80.5
127.0.0.1 - - [19/Apr/2019 14:09:10] "POST / HTTP/1.1" 200 -
127.0.0.1 - - [19/Apr/2019 14:09:19] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [19/Apr/2019 14:09:21] "GET /static/assets/img/favicon.png HTTP/1.1" 200 -
这是我的代码:
@app.route("/", methods=['GET', 'POST'])
def index():
if request.method == 'POST':
try:
r = request.data
data = r.decode('utf-8')
data = json.loads(data)
item = data['item']
price = data['price']
print(item)
print(price)
return render_template('dashboard.html', item=str(item), value=str(price))
except Exception as e:
print(str(e))
item = 'Test'
price = 'Test'
return render_template('dashboard.html', item=str(item), value=str(price))
每当向烧瓶应用程序发送POST请求时,应该如何处理才能使商品和价格显示?到目前为止,HTML上没有任何显示。
我在提出建议后接下来尝试了什么:
# Index route
@app.route("/", methods=['GET', 'POST'])
def index():
if request.method == 'POST':
try:
r = request.data
data = r.decode('utf-8')
return redirect(url_for('item', data=data))
except Exception as e:
print(str(e))
item = 'Test'
price = 'Test'
return render_template('dashboard.html', item=str(item), value=str(price))
# Item route
@app.route("/item/", methods=['GET', 'POST'])
def item():
data = request.args['data']
print(str(data))
data = json.loads(data)
item = data['item']
price = data['price']
print(item)
print(price)
return render_template('dashboard.html', item=item, value=price)
在日志中指出请求已成功完成:
127.0.0.1 - - [19/Apr/2019 16:35:08] "POST / HTTP/1.1" 302 -
{"item": "Fissan Foot Powder", "price": "80.5"}
Fissan Foot Powder
80.5
127.0.0.1 - - [19/Apr/2019 16:35:08] "GET /item/?data=%7B%22item%22%3A+%22Fissan+Foot+Powder%22%2C+%22price%22%3A+%2280.5%22%7D HTTP/1.1" 200 -
但是,当我查看界面时,它保持不变。它没有重定向到它应该去的URL。
有关html的信息,我已经将{{ item }}
和{{ value }}
放在了我希望扫描的项目显示的位置。
我想要实现的是,当触发请求时,它将传递到/item/
路由,在此路由中它将接收有效负载,并且通过GET请求,它应该已经将模板与有效负载{{1}一起呈现了}和item
作为html上的jinja。并且应该在那里显示。我应该怎么做才能做到这一点?
答案 0 :(得分:1)
优良作法是从帖子中返回重定向,并使用get响应将结果显示给用户-请参见Post/Redirect/Get。
答案 1 :(得分:0)
您可以在dashboard.html文件中使用以下内容:
<p>item: {{item}} price: {{value}}</p>