url转化,其实继承于Baseconvert,所以自定义的时候,继承这个类就可以。
#实现需求,一个url中必须包含手机号
#第一步先引入 父类
#第二步,继承父类,自定义一个转化器
#初始化这个tel这个字符url格式
#第五步,将定义好的tel使用用到url中
from flask import Flask from werkzeug.routing import BaseConverter app = Flask(__name__) #实现需求,一个url中必须包含手机号 #第一步先引入 父类 #第二步,继承父类,自定义一个转化器 #初始化这个tel这个字符url格式 #第五步,将定义好的tel使用用到url中 #to_python 方法和Baseconverter综合使用,用户请求的参数,可以再经过to_python转化之后,返回到到url中作为参数 #第一步,继承父类BaseConvert,定义to_python返回内容 #第二步,初始化,写视图函数 #to_url方法的返回值,调用Url_for的时候根据需要生成符合规则url #第一步,先引入url_for #定义 to_url,也就是生成url的规则(重复自定义url转换器的过程) #第三步,使用url_for调用 to_for class Telephoneconverter(BaseConverter): regex = r'1[3578]\d{9}'#利用正则定义手机号 class ListConVerter(BaseConverter): def to_python(self, value): return value.split('+') def to_url(self, value): return 'hello' app.url_map.converters['tel'] = Telephoneconverter app.url_map.converters['list'] = ListConVerter @app.route('/') def hello_world(): return 'Hello World!' @app.route('/list/<tel:my_tel>/') def my_list(my_tel): return '您请求的手机号为:%s' % my_tel @app.route('/post/<list:boards>/') def posts(boards): return '您请求的板块为:%s' % boards #to_url @app.route('/details/<list:detail>/') def details(detail): print(url_for('details',boards=['a','b']))#报错了,现在这样看太难理解了 return '您请求的板块为:%s' % detail if __name__ == '__main__': app.run(debug=True)