custom_url_converter

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)

猜你喜欢

转载自blog.csdn.net/hebi123s/article/details/81739353
URL