Flask(视图函数 四)
基于类的视图,可插拔视图
从Django学来的
好处:
- 类可以继承
- 代码可以复用
- 可以定义多种行为
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30from flask import Flask, request
from flask.views import View
app = Flask(__name__)
class UserView(View):
methods = ['GET', 'POST']
def get(self):
return 'get'
def post(self):
return 'post'
# 分配请求
def dispatch_request(self):
dispatch_pattern = {'GET': self.get, 'POST': self.post}
method = request.method
return dispatch_pattern.get(method)()
app.add_url_rule(
'/user',
view_func=UserView.as_view('user'),
methods=["GET", "POST"]
)
if __name__ == '__main__':
app.run(debug=True)
装饰这个类视图
由于会被as_view
转换,所以需要显式的装饰它
1 | def log_time(f): |
使用MethodView
1 | from flask import Flask, request |
这个类就是继承了View
然后重写了dispatch_request
1 | def dispatch_request(self, *args, **kwargs): |
相当于
1 | class MethodView: |
func = getattr(self, 'get', None)
使用MethodView实现reful风格接口
1 | from flask.views import MethodView |
request获取请求数据
get
1 | get_data = request.args |
表单
1 | form_data = request.form |
json
1 | json_data = request.json |
file
1 | file_data = request.files |
上传文件的代码
html
1 |
|
python代码
1 | # -*- encoding: utf-8 -*- |