栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Flask——转换器

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Flask——转换器

转换器,顾名思义,是进行类型转换的。

首先,我们通过打印app中的converters可以看到,Flask内置的转换器有如下:

print('converters:', app.url_map.converters)

converters: {

        'default': ,

        'string': ,

        'any': ,

        'path': ,

        'int': ,

        'float': ,

        'uuid':

}

也就是说,我们在写路由时,这上面几种类型的是可以随意转换的,比如:

@app.route('fruits/')
def get_fruit(id):
    print(id,type(id))
    return 'Fruit page!'

这里打印结果是

 可以看出,我们路由中传入的1,是字符串类型,并非int;倘若非要用int类型,那么这时就可以使用转换器解决。

上段代码的路由可以改为:

@app.route('fruits/')

打印结果:1

补充:int:接收正整数; string: 接受任何不包含‘/’的文本; float:接收正浮点数; path:接收包含‘/’的文本。

 

另外,我们还会遇到再路由中验证手机号/邮箱等业务,这种情况下需要使用正则来自定义转换器。

第一步:导包

自定转换器集成自werkzeug.routing中的BaseConverter类

from werkzeug.routing import BaseConverter

第二步:编写自定义函数

class RegexConverter(BaseConverter):
    '''自定义转换器'''
    regex = '1d{10}'
    def __init__(self, url_map):
        #调用父类方法
        super(RegexConverter, self).__init__(url_map)

    def to_python(self, value):
        #父类方法已实现好了
        return value

这里可以参考BaseConverter类中其他转换器来仿写。

        要验证手机号或者是邮箱,主要是写正则匹配。

第三步:把自定义转换器添加到转换器中

我们要想使用自定义转换器,需要把我们自定义的类加入到app.url_map.converters中才可以使用。

app.url_map.converters['phone'] = RegexConverter # {'phone' : RegexConverter}

这里,可以print一下app中的converters,发现自定义的转换器成功添加到了converters中。

 

 

第四步:写路由

@app.route('/convert/')
def convert(value):
    return '恭喜手机号为{}的用户,学会了自定义转换器'.format(value)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/950040.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号