flask框架(之五)标准类视图
一、类视图
- 之前我们接触的视图都是函数,所以一般简称视图函数。其实视图也可以基于类来实现,类视图的好处是支持继承,但是类视图不能跟函数视图一样,写完类视图还需要通过app.add_url_rule(url_rule,view_func)来进行注册。
二、标准类视图
- 标准类视图是继承自flask.views.View,并且在子类中必须实现dispatch_request方法,这个方法类似于视图函数,也要返回一个基于Response或者其子类的对象。
from flask.views import View
class PersonalView(View):
def dispatch_request(self):
return "逻辑课堂"
# 类视图通过add_url_rule方法和url做映射
app.add_url_rule('/users/',view_func=PersonalView.as_view('personalview'))
-
好处
-
大大的减少了路由的书写
-
可以继承父类的许多方法,减少代码冗余
视图函数
@app.route('/xxx/')
类视图
app.add_url_rule('/xxx/', endpoint='取名', view_func=类名.as_view('取名'))
- 重写dispatch_request这个方法,不重写直接爬出异常(NotImplementedError)