装换器

  装换器:

    有时须要给 URL 添加一定规则,进行限制路由的形式。

    规则可以用 <converter:variable_name> 指定一个可选的转换器  ,参数1:转换器类型,  参数2 :传过来的变量

 

1  Flask自带的转换器

  DEFAULT_CONVERTERS = {

  1. ‘default’: UnicodeConverter,(字符串与2同)
  2. ‘string’: UnicodeConverter,
  3. ‘any’: AnyConverter, 匹配any中存在的地址
  4. ‘path’: PathConverter, 匹配路径
  5. ‘int’: IntegerConverter,
  6. ‘float’:FloatConverter,
  7. ‘uuid’: UUIDConverter 匹配 UUID(x-x-x-xxx-xxxx)之类的字符串

    }

2   自定义转换器的步奏:

  1.自定义一个继承BaseConverter的Converter类

  2. 重写⽗父类的属性,定义转换器器规则

    regex = (新的正则规则)

  3.将⾃自定义转换器器的类添加到默认的转换器器列列表中,

 

 

 

自定义转换器其他两个函数实现

继承于自定义转换器之后,还可以实现 to_python 和 to_url 这两个函数去对匹配参数做进一步处理:

  • 1  to_python:
    • 该函数参数中的 value 值代表匹配到的值,可输出进行查看
    • 匹配完成之后,对匹配到的参数作最后一步处理再返回,比如:转成 int 类型的值再返回:
class RegexConverter(BaseConverter):
    def __init__(self, url_map, *args):
        super(RegexConverter, self).__init__(url_map)
        # 将接受的第1个参数当作匹配规则进行保存
        self.regex = args[0]

    def to_python(self, value):
        return int(value)
  • 2  to_url:
    • 在使用 url_for 去获取视图函数所对应的 url 的时候,会调用此方法对 url_for 后面传入的视图函数参数做进一步处理
    • 具体可参见 Flask 的 app.py 中写的示例代码:ListConverter
posted @ 2018-07-28 13:04  通臂猿  阅读(99)  评论(0编辑  收藏  举报