Flask 即插视图中使用 url_for 获取重定向的目标路径

Flask 框架在 0.7 版本后引入了即插视图的概念,概念在此不详细阐述,可以查看官方文档。然而因为写法的变化,对于不熟练的开发者带来了一些问题,比如我自己今天就遇到一个问题,在服务器指定重定向 redirect 时,如何用 url_for 指定到正确的视图函数上?其实,只要把即插视图理解清楚,这个问题很好解决。

即插视图本质上是用类的方式管理了原本的视图函数和URL路由,在即插视图中,as_view() 即指定了视图名称,而模块名则可以由 Blueprint 中的设置来确定。所以,假设如下情况:

  • Blueprint 指定模块名称为 main
  • 即插视图类 class LoginPage 含有分别响应 get 请求与 post 请求的方法 def get(self) & def post(self),且另有一个即插视图类 class MainPage
  • url 绑定为 url('/login', view_func=LoginPage.as_view('login')) & url('/mainpage', view_func=MainPage.as_view('mainpage'))

当一个登陆请求通过 post 发送到后台请求登陆,并且验证通过,跳转到主页(mainpage)时,如果要使用 url_for() 来重定向,那么,正确的写法是,指定模块名为 main,视图名为 mainpaige,最终写成:return redirect(url_for('main.mainpage')) 即可。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值