当使用系统自带的转换器,是查找DEFAULT_CONVERTERS字典的键,找出所代表的类。
DEFAULT_CONVERTERS = {
'default': UnicodeConverter,
'string': UnicodeConverter,
'any': AnyConverter,
'path': PathConverter,
'int': IntegerConverter,
'float': FloatConverter,
'uuid': UUIDConverter,
}
而系统定义的类继承自BaseConverter这个基类。
class BaseConverter(object):
"""Base class for all converters."""
regex = '[^/]+'
weight = 100
def __init__(self, map):
self.map = map
def to_python(self, value):
return value
def to_url(self, value):
return url_quote(value, charset=self.map.charset)
自定义转换器类
class MyRegexConverter(BaseConverter):
# 2.编写初始化方法, init方法, 接收两个参数, url_map, regex, 并初始化父类空间和子类空间
def __init__(self,url_map,regex):
super(MyRegexConverter, self).__init__(url_map)
self.regex = regex
3.将自定义转换器类,添加到默认的转换列表中
app.url_map.converters[‘re’] = MyRegexConverter
#使用自定义转换器
#接收3位整数
@app.route(’/<re("\d{3}"):num>’)