自定义url转换器。
无纤尘
一、自定义数据类型
1、实现一个类,继承自'BaseConverter'。
2、在自定义的类中,重写'regex',也就是这个变量的正则表达式。
3、将自定义的类,映射到'app.url_map.converters'
示例:编写一个类型,可以识别电话号码。
from werkzeug.routing import BaseConverter
class TelephoneConverter(BaseConverter):
regex = r'1[85743]\d{9}'
app.url_map.converters['tel'] = TelephoneConverter
@app.route('/tele/<tel:my_tel>')
def mytel(my_tel):
return 'the number is %s' % my_tel
若满足电话号码格式,既可以运行,否则找不到该文件。
二、url转换to_python(self,value)
的作用:这个函数的返回值,将传递给视图view函数中作为参数。
三、to_url(self,value)
的作用:这个方法的返回值,将会在调用url_for函数的时候生成符合要求url形式。
class ListConverter(BaseConverter):
def to_python(self,value):
return value.split('+')
def to_url(self,value):
return '+'.join(value)
app.url_map.converters['list'] = ListConverter
@app.route('/')
def hello_world():
print(url_for('myp1',my_list = ['1','2','3']))
return url_for('myp1',my_list = ['1','2','3'])
@app.route('/p1/<list:my_list>/')
def myp1(my_list):
return 'the value is %s' % my_list
版权协议须知!
本篇文章来源于 岳岳 ,如本文章侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
1369 0 2020-11-24