zoukankan      html  css  js  c++  java
  • flask第十二篇——自定义url转换器【2】

    继续昨天的话题,今天我们来写一个手机号的转换器,方便大家理解

    我们在`BaseConverter`源码里看到好多这种正则表达式:

    正则表达式的目的就是规范匹配的规则,现在我们写一个简单的匹配手机号的正则,但是手机号不管是在`to_python`里还是在`to_url`里都是一个字符串,所以这次我们就不需要重写这两个方法了:

    # coding: utf-8

    from flask import Flask
    from werkzeug.routing import BaseConverter
    import flask app = Flask(__name__)  # type: Flask
    app.debug = True


    # 根目录
    @app.route('/')
    def hello_world():    return 'Hello World!'


    class ListConverter(BaseConverter):    def to_python(self, values):        """        将url中的参数转换为我们需要的数据类型        """        # split方法就是去掉加号并返回list类型数据        tmp = values.split('+')
           return tmp
       
       def to_url(self, values):        """        将[1,2,3]转换成1+2+3        """        # 遍历列表values中的数据,以+连接,最后tmp1的值即1+2+3        tmp1 = '+'.join([BaseConverter.to_url(self, value) for value in values])
           return tmp1


    class PhoneConverter(BaseConverter):
       regex = r'1d{10}'


    # 将写好的类注册到DEFAULT_CONVERTERS
    app.url_map.converters['list'] = ListConverter app.url_map.converters['phone'] = PhoneConverter


    @app.route('/detail/<list:params>/')
    def detail(params):    print 'params:%s' % params    
       return 'success for url'


    @app.route('/phone/<phone:telephone>/')
    def phoneNumber(telephone):    print telephone    
       return telephone


    if __name__ == '__main__':    app.run()

    执行代码后看到:

    昨天的代码我同样保留了,希望大家可以做一下对比。

    为避免大家认识不到,说一下代码里需要注意的地方

    • app.url_map.converters['phone'] = PhoneConverter

    这里的phone要和@app.route('/phone/<phone:telephone>/')里面的传参类型一致。就是说这两个红色的字符串是要相同的。

    • 正则表达式

    船长一直想学正则,无奈找不到好的教程,船长有时间会继续找找,如果找到了且学会了,会及时和大家分享的。

    身体不舒服,今天就说这么多了,希望大家有时间好好看看,我是觉得虽然是测试,但是要想成为真正的大神不会点Python开发是不行的。大家和我一起加油吧。

    请关注微信公众号:自动化测试实战,查看更好的排版及图片

  • 相关阅读:
    ElasticSearch(ES)学习笔记
    Lucene學習日志
    velocity代码生成器的使用
    springboot学习笔记
    springmvc json 类型转换错误
    在做del业务时,传递参数,和接口中入参注释
    做add添加业务时,字符集乱码,form标签库,button的href 问题,添加后页面跳转,forward,redirect 。定制错误输出
    mybatis中联合查询的返回结果集
    mybatis分页,绝对路径的2种写法
    maven导入项目时报错,配置应用程序监听器[org.springframework.web.context.ContextLoaderListener]错误
  • 原文地址:https://www.cnblogs.com/captainmeng/p/8601458.html
Copyright © 2011-2022 走看看