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开发是不行的。大家和我一起加油吧。

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

  • 相关阅读:
    巴洛克式和哥特式的区别
    推荐阅读书籍,是时候再行动起来了。
    AtCoder ABC 159F Knapsack for All Segments
    AtCoder ABC 159E Dividing Chocolate
    AtCoder ABC 158F Removing Robots
    AtCoder ABC 158E Divisible Substring
    AtCoder ABC 157F Yakiniku Optimization Problem
    AtCoder ABC 157E Simple String Queries
    AtCoder ABC 157D Friend Suggestions
    AtCoder ABC 156F Modularness
  • 原文地址:https://www.cnblogs.com/captainmeng/p/8601458.html
Copyright © 2011-2022 走看看