需求:
在具体的web开发实现的过程中,可能会有一些其他的匹配规则,例如对数据的长度进行限制、某个号段的限制、单词的限制。此时,自带的converter就不能满足我们的要求了,需要我们定制属于我们自己的转换器。
步骤:
1.自定义类,继承(BaseConverter)alt+回车导入一下,并且设置过滤规则(设置regex属性)
2.将自定义转换器添加到应用中
一个简单的demo效果:
完整代码如下:
from flask import Flask
from werkzeug.routing import BaseConverter
app = Flask(__name__)
# -实现自定义转换器
# 1.自定义类,继承(BaseConverter)alt+回车导入一下,并且设置过滤规则(设置regex属性)
# 2.将自定义转换器添加到应用中
class CustemConverter(BaseConverter):
# 设置自定义正则转换器过滤规则
regex = r"[1-9]\d{5}(?!\d)" # 在此写了一个邮政编码的过滤规则,在此可以随意写一个你所需要的正则表达式
# 将自定义转换器添加到应用中
app.url_map.converters["re"] = CustemConverter
# 将正则转换器定义到路由变量中
@app.route('/<re:adressid>')
def index(adressid):
if adressid == "450000":
return "郑州邮政编码:%s" % adressid
else:
return "邮政编码:%s" % adressid
if __name__ == '__main__':
app.run(host="0.0.0.0", port=5000, debug=True)