五、FBV与CBV

1、FBV与CBV

  FBV(function base views):基于函数的视图,就是在视图里使用函数处理请求

  CBV(class base views):基于类的视图,就是在视图里使用类处理请求。

2、flask中的FBV和CBV使用方式(两种方式都必须通过add_rule_url方法将其添加到路由映射里面,不可以使用装饰器)

FBV:

@app.route("/")
def index():
    return "Hello World"

CBV:

第一种方式:所有在methods里面注册的请求都会经过dispatch_request方法,如果想要让对应的请求执行对应的方法,必须手动在dispatch_request里面通过反射来实现,所以第一种方式基本不用,主要是用第二种方式。

 1 class HomeView(views.View):
 2     # 可以处理的方法
 3     # methods = [],
 4     # 装饰器
 5     # decorators = (,),
 6     # provide_automatic_options = {}
 7 
 8     # 通过的请求都走这里,必须被重载
 9     def dispatch_request(self):
10         return "Hello View"
11 
12 
13 app.add_url_rule("/home", endpoint=None, view_func=HomeView.as_view(name="home"))

第二种方式:第二种方式与django类似,MethodView已经实现了请求分发,直接编写对应的处理方法

1 class HomeView(views.MethodView):
2     def get(self):
3         return "GET, home!"
4 
5     def post(self):
6         return "Post, home!"
7 
8 
9 app.add_url_rule("/home", endpoint=None, view_func=HomeView.as_view(name="home"))

 

posted @ 2020-07-24 14:59  找回失去的自我  阅读(464)  评论(0编辑  收藏  举报