我有一个Flask应用程序,并且查看如下:
@app.route("/", methods=('POST', 'GET'))
def index():
...
return redirect(url_for(
'checkout',
data=json.dumps(data['data']),
source=source), code=307
)
@app.route("/checkout", methods=('POST', 'GET'))
def checkout():
data = json.loads(request.args['data'])
...
一切正常,除了重定向后我有像
这样的网址/checkout?source=&data={ ... }
但是我希望它清楚,没有url中的params。 我怎样才能达到它?
我尝试从重定向更改/删除代码param,但都没有工作。
答案 0 :(得分:1)
您获得这些参数是因为您明确告诉flask生成它们:
url_for("checkout", data=..., source=...)
创建结帐视图的网址,其中包含参数“data”和“source”。如果你不想让他们离开。
但我发现你需要传递一些数据。在您的情况下,将会话用于该任务是有意义的:
from flask import session
# in the index view
session["data"] = your_data
session["source"] = your_source
return redirect(url_for("checkout"))
# in the checkout view
data = session.pop("data", None)
source = session.pop("source", None)
if data is not None and source is not None:
# do your stuff
else:
# checkout view was accessed before the index view
# probably an error -> abort(400) ?
有两点需要注意:
SECRET_KEY
。有关会话的更多信息以及如何提供密钥外观here