一、Flask的默认转换器
转换器 | 含义 |
---|---|
default | 接受字符串,默认转换器 |
stirng | 接受字符串,跟默认一样 |
int | 接受整数 |
float | 同 int ,但是接受浮点数 |
uuid | 唯一识别码 |
path | 和默认的相似,但也接受斜线 |
二、自己定义一个转换器
在Flask中,默认支持6种转换器,但这些转换器并不能完全按照我们的意愿去接受,比如我们想接受一个手机号
这些默认的转换器就不能帮我们实现,我们就可以自己定义一个转换器
步骤如下:
-
导入转换器基类
BaseConverter
rom werkzeug.routing import BaseConverter
-
自定义类继承于转换器基类
class PhoneConverter(BaseConverter):#我这里定义电话转换器 def __init__(self,map): BaseConverter.__init__(self, map) self.regex=r'1[34578]\d{9}'
-
添加转换器到默认的转换器字典
app.url_map.converters
中app.url_map.converters['phone']=PhoneConverter
-
使用自定义转换器实现自定义匹配规则
@app.route("/<phone:number>")
三、万能一点!
class ReConverter(BaseConverter):#我这里定义万能转化器
def __init__(self,map,regex):
BaseConverter.__init__(self, map)
self.regex=regex
app.url_map.converters['re']=ReConverter#添加
@app.route("/<re(r'1[34578]\d{9}'):number>")#使用时通过正则表达式实现