Python 如何使用url中未显示的参数重定向?
我有一个烧瓶应用程序,视图如下:Python 如何使用url中未显示的参数重定向?,python,flask,Python,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=('P
@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。
我怎样才能到达它
我尝试从重定向中更改/删除代码参数,但都没有成功。您得到这些参数是因为您明确告诉flask生成它们:
url\u用于(“签出”,数据=…,源=…)
创建签出视图的url,包括参数“数据”和“源”。如果你不想让他们离开
但我发现你需要传递一些数据。在您的情况下,将会话用于该任务是有意义的:
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) ?
有两点需要注意:
密钥
更多的会话和如何提供一个秘密密钥外观
您需要定义<代码>签出< /代码>及其接受URL部分的代码,用于<代码>源代码>代码>和<代码>数据>代码>,尽管将一个JSON字符串放在URL的中间将看起来类似于您现在的版本。但是,如果数据
来自帖子正文,则307将处理将其传递到下一页的操作,而不需要将其包含在重定向
调用中。