1. 路由定义
1.1 路由基本定义
... # 指定访问路径为 demo @app.route('/demo') def demo(): return 'demo' ...
1.2 路由传递参数(两种)
- 没有限定类型
# @app.route('/user/<user_id>') def user_info(user_id): return 'hello %s' % user_id
- 限定数据类型
# @app.route('/user/<int:user_id>') def user_info(user_id): return 'hello %d' % user_id
1.3 路由限定请求方式
# @app.route('/demo', methods=['GET', 'POST']) def demo(): # 直接从请求中取到请求方式并返回 return request.method
1.4 正则匹配路由
在 web 开发中,可能会出现限制用户访问规则的场景,那么这个时候就需要用到正则匹配,根据自己的规则去限定请求参数再进行访问
-
导入转换器基类:在 Flask 中,所有的路由的匹配规则都是使用转换器对象进行记录
-
自定义转换器:自定义类继承于转换器基类
-
添加转换器到默认的转换器字典中
-
使用自定义转换器实现自定义匹配规则
代码实现
- 导入转换器基类
from werkzeug.routing import BaseConverter
- 自定义转换器
# 自定义正则转换器 from werkzeug.routing import BaseConverter class RegexConverter(BaseConverter): def __init__(self,url_map,*args): super(RegexConverter, self).__init__(url_map) # 正则参数 self.regex = args[0]
- 添加转换器到默认的转换器字典中,并指定转换器使用时名字为: re
# 将自定义转换器添加到转换器字典中,并指定转换器使用时名字为: re app.url_map.converters['re'] = RegexConverter
- 使用转换器去实现自定义匹配规则
# 当前此处定义的规则是:手机号码 # 正则匹配路由 @app.route("/login/<re('1\d{10}'):mobile>") def login(mobile): return mobile
1.5 系统自动转换器
# DEFAULT_CONVERTERS = { 'default': UnicodeConverter, 'path': PathConverter, 'string': UnicodeConverter, 'any': AnyConverter, 'int': IntegerConverter, 'float': FloatConverter, 'uuid': UUIDConverter, }
系统自带的转换器具体使用方式在每种转换器的注释代码中有写,请留意每种转换器初始化的参数。
2 http请求与响应
2.1 请求
-
-
作用:在视图函数中取出本次请求数据
-
导入:from flask import request
常用的属性如下:
属性 | 说明 | 类型 |
---|---|---|
data | 记录请求的数据,并转换为字符串 | * |
form | 记录请求中的表单数据 | MultiDict |
args | 记录请求中的查询参数 | MultiDict |
cookies | 记录请求中的cookie信息 | Dict |
headers | 记录请求中的请求头 | EnvironHeaders |
method | 记录请求使用的HTTP方法 | GET/POST |
url | 记录请求的URL地址 | string |
files | 记录请求上传的文件 | * |
json | 记录请求的json数据 |