有两种方法可以做到这一点。
选项 1:使用 POST 参数而不是 GET。
如果参数是通过 HTML 表单传递的,请将 method=post 添加到 <form> 标记,然后将页面更改为:
@app.route("/magicpage")
def magicPage():
param1 = request.args.get("param1")
param2 = request.args.get("param2")
到:
@app.route("/magicpage", methods=["POST"])
def magicPage():
param1 = request.form.get("param1")
param2 = request.form.get("param2")
好处是没有重定向。不利的一面是,如果用户尝试刷新结果页面,他们将收到令人讨厌的浏览器弹出窗口,提示他们重新提交信息:
也就是说,这是在网络中传递隐藏参数的更常见方式。
选项2:处理参数后进行重定向。
这有点复杂,因为我们重定向到同一个页面,我们需要检查他们是第一次还是第二次来到这个页面。
最好的方法是使用发布请求。这样做的好处是没有刷新弹出窗口,但缺点是除非您将参数存储在会话中,否则不会在页面的后期渲染中为您提供参数。
@app.route("/magicpage", methods=["GET", "POST"])
def magicPage():
if request.method == 'POST':
# process parameters
return redirect(request.path)
if request.method == "GET":
# render page
或者,您可以只检查是否存在一个参数作为您的指标:
@app.route("/magicpage", methods=["GET", "POST"])
def magicPage():
if request.form.get("param1", None) is not None:
# process parameters
return redirect(request.path)
else:
# render page