我目前正在向Flask提交POST请求,其中包含我用来过滤数据库请求的数据,该数据显示在另一个URL上。
这一切正常,但是,刷新页面后,自然会丢失数据,并且我收到内部服务器错误。
如果用户点击刷新,如何存储这些数据以重新加载?
@app.route("/orders/<string:order_id>", methods=["GET", "POST"])
@login_required
def orderinfo(order_id):
# select order info
order_info = db.execute("""SELECT * FROM orders JOIN customers
ON customers.id = orders.customer_id
WHERE order_id = :order_id""", order_id=order_id)
# select recipe details
rname = request.form.get('rname')
recipe = db.execute("SELECT * FROM recipes WHERE rname=:rname", rname=rname)
return render_template('/orderdetails.html', order_info=order_info, recipe=recipe)
谢谢。
编辑:
DEBUG:cs50:SELECT * FROM recipes JOIN ingredients ON
ingredients.product_code = recipes.ingredient_id WHERE rname='CHE/006' AND
approved=1
INFO:werkzeug:127.0.0.1 - - [20/Nov/2019 21:25:47] "POST /orders/6 HTTP/1.1"
200 -
DEBUG:cs50:SELECT * FROM orders JOIN customers ON customers.id =
orders.customer_id WHERE order_id = '6'
DEBUG:cs50:SELECT * FROM recipes JOIN ingredients ON
ingredients.product_code = recipes.ingredient_id WHERE rname=NULL AND
approved=1
ERROR:app:Exception on /orders/6 [GET]
Traceback (most recent call last):
File "c:\users\brad\desktop\final\env\lib\site-packages\flask\app.py", line
2446, in wsgi_app
response = self.full_dispatch_request()
File "c:\users\brad\desktop\final\env\lib\site-packages\flask\app.py", line
1951, in full_dispatch_request
rv = self.handle_user_exception(e)
File "c:\users\brad\desktop\final\env\lib\site-packages\flask\app.py", line
1820, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "c:\users\brad\desktop\final\env\lib\site-packages\flask\_compat.py",
line 39, in reraise
raise value
File "c:\users\brad\desktop\final\env\lib\site-packages\flask\app.py", line
1949, in full_dispatch_request
rv = self.dispatch_request()
File "c:\users\brad\desktop\final\env\lib\site-packages\flask\app.py", line
1935, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "C:\Users\Brad\Desktop\Final\helpers.py", line 14, in
decorated_function
return f(*args, **kwargs)
File "C:\Users\Brad\Desktop\Final\app.py", line 462, in orderinfo
recipe = db.execute("SELECT * FROM recipes JOIN ingredients ON
ingredients.product_code = recipes.ingredient_id WHERE rname=:rname AND
approved=1", rname=session['rname'])
File "c:\users\brad\desktop\final\env\lib\site-
packages\flask\templating.py", line 140, in render_template
ctx.app,
File "c:\users\brad\desktop\final\env\lib\site-
packages\flask\templating.py", line 120, in _render
rv = template.render(context)
File "c:\users\brad\desktop\final\env\lib\site-
packages\jinja2\asyncsupport.py", line 76, in render
return original_render(self, *args, **kwargs)
File "c:\users\brad\desktop\final\env\lib\site-
packages\jinja2\environment.py", line 1008, in render
return self.environment.handle_exception(exc_info, True)
File "c:\users\brad\desktop\final\env\lib\site-
packages\jinja2\environment.py", line 780, in handle_exception
reraise(exc_type, exc_value, tb)
File "c:\users\brad\desktop\final\env\lib\site-packages\jinja2\_compat.py",
line 37, in reraise
raise value.with_traceback(tb)
File "C:\Users\Brad\Desktop\Final\templates\orderdetails.html", line 1, in
top-level template code
{% extends "layout.html" %}
File "C:\Users\Brad\Desktop\Final\templates\layout.html", line 114, in top-
level template code
{% block main %}{% endblock %}
File "C:\Users\Brad\Desktop\Final\templates\orderdetails.html", line 17, in
block "main"
<span class="badge badge-pill badge-success">{{ recipe[0]["flavour"] }}
</span>
File "c:\users\brad\desktop\final\env\lib\site-
packages\jinja2\environment.py", line 411, in getitem
return obj[argument]
jinja2.exceptions.UndefinedError: list object has no element 0
INFO:werkzeug:127.0.0.1 - - [20/Nov/2019 21:25:49] "GET /orders/6 HTTP/1.1"
500 -
为澄清环境,当前在本地设置和通过Google Chrome进行测试。