flask中的cbv
第一种
class index(views.methodview):
methods = ['get', 'post']
decorators = []
def get(self):
return 'get'
def post(self):
return 'post'
app.add_url_rule('/index', view_func=index.as_view(name='index')) # name='index'相当于设置endpoint
index.as_view内部也会根据请求方式进行反射执行对应函数即执行dispatch_request
app.add_url_rule是进行装饰器路由映射内部执行的函数,本质上也是由add_url_rule添加的映射关系,decorators是添加的装饰器列表
第二种
class index(views.view):
methods = ['get', 'post']
decorators = []
def dispatch_request(self):
print('dispatch_request')
return 'index!'
app.add_url_rule('/index', view_func=index.as_view(name='index'))
第二种继承的是views.view,这样就需要写dispatch_request函数,但也不必去进行分发请求,那么就会像fbv一样。


