flask第十二篇——自定义url转换器【2】

继续昨天的话题,今天我们来写一个手机号的转换器,方便大家理解文章来源地址https://www.yii666.com/article/332441.html文章地址https://www.yii666.com/article/332441.html

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

flask第十二篇——自定义url转换器【2】网址:yii666.com

正则表达式的目的就是规范匹配的规则,现在我们写一个简单的匹配手机号的正则,但是手机号不管是在`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'1\d{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()

执行代码后看到:

flask第十二篇——自定义url转换器【2】文章来源地址:https://www.yii666.com/article/332441.html

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

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

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

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

  • 正则表达式

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

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

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

版权声明:本文内容来源于网络,版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。文本页已经标记具体来源原文地址,请点击原文查看来源网址,站内文章以及资源内容站长不承诺其正确性,如侵犯了您的权益,请联系站长如有侵权请联系站长,将立刻删除

flask第十二篇——自定义url转换器【2】-相关文章

  1. python_flask 基础巩固(自定义URL转换器)

    自定义URL转换器(在BaseConverter类外定义)from werkzeug.routing import BaseConverter定义类继承BaseConverter 实现类app.url_map.converters[\\\'\\\']=类to_python 方法是将函数解析过程交给类a+b - [a,b],使用场景没使用url_forto_url方法是将函数解析过程交给类[a,b] - a+b 使用url_for

  2. 自制URL转换器

    自定义 url 转换器五个步骤:定义一个类。在类中定义一个属性  regex  ,这个属性是用来保存 url 转换器规则的正则表达式。实现  to_python(self,value)  方法,将 url 中的值转换一下,然后传给视图函数的。实现  to_url(self,value)  方法,做 url 反转的时候,将传进来的参数转换

  3. flask第十一篇——自定义url转换器

    首先和大家说一下flask的组成,flask其实是werkzeug(路由和http处理)+SQLAlchemy(数据库)+Jinja2(模板)组成的,今天我们要看到的东西就是`werkzeug`里面的内容。我们在代码里导入from werkzeug.routing import BaseConverter,然后进入BaseConverter中看一下这个方法的源码:其中to_python方法的

  4. django 自定义url转换器

    django内置的url转换器,包括有int、str、uuid等等。但是有时候他们不能满足我们的需求,因此就需要使用自定义url转换器。自定义url转换器的五步:1、定义一个类,直接继承自object就可以2、在类中定义一个属性regex,这个属性是用来限制url转换器规则的正则表达式。3、实现t

  5. 014:Django内置的URL转换器

    Django内置的URL转换器:上节中我们说了URL中传参的情况,传递参数是通过 尖括号来进行指定的。并且在传递参数的时候,可以指定这个参数的数据类型,比如文章的 id 都是 int 类型,那么可以这样写 int:id ,以后匹配的时候,就只会匹配到 id 为 int 类型的 url ,而不会匹配其他

  6. 六:flask-自定义URL转换器

    flask进行url参数匹配的时候,是继承的werkzeug.routing.BaseConverter库进行重写的导入看源码里面有所有的URL参数数据类型的判断也就是说,可以继承过后实现自己的需求,即自定义url转换器比如:url中,接收一个参数,限制此参数必须满足手机号格式to_python()方法,此方法的返回值

  7. Azure SDK for Python Url

    Azure SDK for Python URL 明细表

  8. flaks-自定义url转换器

    flaks-自定义url转换器flask自定义的url转换器必须要继承BaseConverter这个类,然后再更新到app的url_map里面。重写regex这个属性,这个属性就是自定义url匹配的正则to_python方法:将传进来的value参数进行一些操作,再返回一个值出去,这个函数的返回值将被用为函数视图to_url:当有u

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信图片_20190322181744_03.jpg

微信扫一扫打赏

请作者喝杯咖啡吧~

支付宝扫一扫领取红包,优惠每天领

二维码1

zhifubaohongbao.png

二维码2

zhifubaohongbao2.png