Flask 框架在 0.7 版本后引入了即插视图
的概念,概念在此不详细阐述,可以查看官方文档。然而因为写法的变化,对于不熟练的开发者带来了一些问题,比如我自己今天就遇到一个问题,在服务器指定重定向 redirect
时,如何用 url_for
指定到正确的视图函数上?其实,只要把即插视图理解清楚,这个问题很好解决。
即插视图本质上是用类的方式管理了原本的视图函数和URL路由,在即插视图中,as_view()
即指定了视图名称,而模块名则可以由 Blueprint
中的设置来确定。所以,假设如下情况:
main
class LoginPage
含有分别响应 get 请求与 post 请求的方法 def get(self)
& def post(self)
,且另有一个即插视图类 class MainPage
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'))
即可。