flask 在使用 redirect 对 url 重定向的时候,怎么传递请求体?

2019-07-25 12:51:17 +08:00
 kayseen

请教大家 flask 的重定向(不使用 url_for 重定向): 如下: 视图函数 A 的 url 为"127.0.0.1:8000/A",它接受通过 post 传递过来的参数为{"name":"jay"}; 视图函数 B 的 url 为"127.0.0.1:8000/B"; 请问怎么在视图函数 A 中使用 redirect 重定向到 B 的 url,同时将 A 通过请求体接受的参数也传递给 B,在视图函数 B 中使用这个参数?

3854 次点击
所在节点    Flask
10 条回复
kayseen
2019-07-25 12:52:42 +08:00
请问应该怎么在视图函数 A 中定义重定向,才能使请求体参数也传递到 B?
sunjiayao
2019-07-25 12:57:52 +08:00
把参数拼到 url 后面
lc1450
2019-07-25 13:09:32 +08:00
听起来像请求转发,不过 flask 貌似没有此功能, 重定向后就是 get 请求了,要传参只能放 url 里或者放 session 里
hzwjz
2019-07-25 13:18:10 +08:00
你的最终目的是什么?是想在视图 B 响应的时候渲染视图 A 接收 post 过来的参数?如果是这样子,你何不如将数据 post 给视图 B ?

再不济,也可以这样子吧

```Python
@app.route('/A')
def view_a():
if request.method.lower() == "post":
redirect(location='/B', code=302, response=make_response(render_template('template_fie.html'))))
```

参考

https://flask.palletsprojects.com/en/1.0.x/api/#flask.redirect
https://flask.palletsprojects.com/en/1.0.x/api/#flask.make_response

以上
Abbeyok
2019-07-25 13:36:08 +08:00
redirect(url_for('.B',name='jay'))
RicardoY
2019-07-25 13:41:21 +08:00
这个听起来像是 forward...flask 似乎不直接支持..
trys1
2019-07-25 13:43:52 +08:00
这已经不是 flask 的范畴了,这是 HTTP 的事
zhuweiyou
2019-07-25 15:25:58 +08:00
带上 数据的 ID,?id=xxx 然后在 B 里查出来。
带上 数据的所有内容,?json={...} 然后在 B 里直接用。
存在 session 里
Kylin30
2019-07-25 15:29:34 +08:00
把共用部分抽出来?
tomczhen
2019-07-28 17:03:02 +08:00
307/308,但是需要 http client 有实现。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/586092

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX