在我的网站中,我有一些URL,它们的尾随参数如下:
example.com/magicpage/?p=10&d=somestuff
处理请求后,我是否可以删除这些参数?因此,当用户单击链接时,将传递参数,但是可见的URL只是:
example.com/magicpage
我的代码:
@app.route("/magicpage")
def magicPage():
#parse parameters and do things
#finish up
#remove the trailing parameters in the url
#return the rendered page
有两种方法可以做到这一点。
如果参数是通过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")
上行是没有重定向的。缺点是,如果用户尝试刷新结果页面,他们将获得有关重新提交信息的令人讨厌的浏览器弹出窗口:
也就是说,这是在网络中传递隐藏参数的更常见方法。
这有点复杂,因为由于我们将重定向到同一页面,所以我们需要检查它们是第一次还是第二次访问此页面。
最好的方法是使用发布请求。这具有没有刷新弹出窗口的优点,但是具有在以后的页面呈现中不给您参数的缺点,除非您将其存储在会话中。
@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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句