初始flask-内置转换器的使用及自定义转换器的编写

内置转换器:

default:不指定转换器情况下的默认转换器可写可不写

any:列出的元组中的任意一个,和枚举类似   例如:<any(admin,hsj):username> 

int:接收int类型参数

string:接受字符串类型单数(参数中不能带/)

path:path转换器可以让路径参数中带有/,string不可以带/,否则访问失败

uuid:接收uuid类型参数

float:接收浮点型参数

自定义转换器:

当系统内置的转换器无法满足业务需求时,需要自己根据需要进行扩展

自定义转换器的编写:编写的自定义转换器类必须继承Baseconverter

例如:

from werkzeug.routing import BaseConverter

class PhoneConverter(BaseConverter):
    regex = "1[3-9]\d{9}"

#将自定义的转换器注册到系统内置的转换器中
app.url_map.converter["Phone"] = PhoneConverter

自定义转换器的使用:使用注册自定义转换器时指定的key当作系统内置的转换器来使用即可

例如:

@app.router("/user/<phone:phone_num>")
def index(phone_num)
    print("phone_num=",phone_num,",type=",type(phone_num))
    return f"手机号:{phone_num}"

正则(万能)转换器的编写:

class RegexpConvert(BaseConverter):
    def __init__(self, url_map, regexp)
        super().__init__(url_map)
        print("RegexpConvert.regexp=",regexp)
        # 将外界传入的参数赋值给系统内置的转换器BaseConverter的属性regex
        # 后续这个类内部会自动验证我们传入的正则表达式能否满足要求        
        self.regex = regexp

#将自定义的转换器注册到系统内置的转换器中
app.url_map.converter["re"] = RegexpConvert

正则转换器的使用:

使用注册自定义转换器时指定的key当作系统内置的转换器来使用,此时需要传参,格式为:<key(参数):content> 参数定义为自定义的正则表达式即可

例如:

@app.route("/user/<re(r'.*'):content>")
def index(content):
    print("content=", content, "type=", type(centent))
    return content
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值