flask 的自定义转换器

根据具体的需求,有些时候是需要用到正则来灵活匹配URL,但是Flask的路由匹配机制是不能直接在路由里直接写正则的,这时候就需要使用转换器!

Flask的默认转换器:DEFAULT_CONVERTERS = {
‘default’: UnicodeConverter,
‘string’: UnicodeConverter,
‘any’: AnyConverter,
‘path’: PathConverter,
‘int’: IntegerConverter,
‘float’: FloatConverter,

‘uuid’: UUIDConverter,}

具体用法如下:

@app.route(‘/pp/<int:p_id>’)
def demo(p_id):

return ‘demo %s’ % pr_id


但很多时候默认的装换器并不能满足具体的使用,所有很多时候需要自定义转换器:

自定义转换器的步奏:1.自定义一个继承BaseConverter的Converter类,2. 重写⽗父类的属性,定义转换器器规则

regex = (新的正则规则),3.将⾃自定义转换器器的类添加到默认的转换器器列列表中,4。使用

class RegexConverter(BaseConverter):
“””⾃自定义转换器器:实现验证手机号码的正则”””
# 重写⽗父类的属性,定义转换器器规则
regex = ‘1[34578][\d]{9}’
# 将⾃自定义的转换器器添加到转换器器列列表中
app.url_map.converters[‘re’] = RegexConverter
@app.route(‘/new_mobile/<re:mobile_id>’)
def demo(mobile_id):

return ‘demo %s’ % mobile_id


具体使用过程中还会用到的方法:

to_python方法      作用:只有当匹配成功后才会调用的,可以对匹配到的参数进行行处理 比如修改类型:

                            转换结果的类型
                            def to_python(self, value):
                                    value = int(value)

                                    return value

                            执行流程是这样的: 在正则匹配完成之后,调⽤用对应的视图之前,将匹配结果传入,并做最后的处理

to_url 方法          作⽤:可以在该⽅法中修正传入到路由的参数 方便更好的正则匹配,

                                    比如: URL编码的操作  修正参数,更加准确的匹配正则

                                    def  to_url(self, value):

                                        # 匹配6位数的参数,位数不够的补0

                                            value = "60%d" value

                                            return value

                                什么时候会被调用:在正则匹配之前会被调用执行,并传入参数,不会关心是否匹配成功,该方法执行 完, 才会做真正的路由匹配

                            












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值