美文网首页程序员python 高级码农成才之路
flask---系统转换器,自定义转换器

flask---系统转换器,自定义转换器

作者: 幼姿沫 | 来源:发表于2020-11-28 08:57 被阅读0次

    系统转换器,自定义转换器

    在 web 开发中,可能会出现限制用户访问规则的场景,那么这个时候就需要过滤指定用户,所以可以使用转换器实现

    转换器的本质:通过正则表达式,匹配路由地址

    一.系统自带转换器

    DEFAULT_CONVERTERS = {

    'default':          UnicodeConverter,

    'string':          UnicodeConverter,

    'any':              AnyConverter,

    'path':            PathConverter,

    'int':              IntegerConverter,

    'float':            FloatConverter,

    'uuid':            UUIDConverter,

    }

    系统自带的转换器具体使用方式在每种转换器的注释代码中有写,请留意每种转换器初始化的参数。

    二.自定义转换器

    自定义转换器,具体实现步骤为:

    导入转换器基类(BaseConverter):

    Flask中所有的路由的匹配规则,都是使用转换器实现

    自定义转换器:自定义类继承于转换器基类

    添加转换器到默认的转换器字典中

    使用自定义转换器实现自定义匹配规则

    代码实现

    from flask import Flask

    #导入基类转换器

    from werkzeug.routing import BaseConverter

    app = Flask(__name__)# 1.自定义类,继承BaseConverter

    class  MyRegexConverter(BaseConverter):

    # 2.编写初始化方法, init方法, 接收两个参数, url_map, regex, 并初始化父类空间和子类空间def__init__(self,url_map,regex):

    super(MyRegexConverter, self).__init__(url_map)       

    self.regex = regex

    # 3.将自定义转换器类,添加到默认的转换列表中

    app.url_map.converters['re'] = MyRegexConverter

    #使用自定义转换器#接收3位整数

    @app.route('/<re("\d{3}"):num>')

    def   hello_world(num):

    print("num = %s"%num)

    return"the num is %s"%num

    #接收一个手机号@app.route('/<re("1[345678]\d{9}"):mobile>')

    def    get_phone_number(mobile):

    return "the mobile is %s" % mobile

    if__name__ =='__main__':   

    app.run()

    相关文章

      网友评论

        本文标题:flask---系统转换器,自定义转换器

        本文链接:https://www.haomeiwen.com/subject/afgrmktx.html