Flask自定义转换器,实现路由匹配正则表达式参数

Flask框架动态路由实现参数传递和Django框架有类似之处,但是相比于Django框架,Flask实现复杂的参数就需要自己自定义转换器来实现了,而不能向Django那样直接使用正则表达式

11 # 路由传递的参数默认当做string处理 22 # 这里指定int,尖括号中冒号后面的内容是动态的 33 44 @app.route('/user/<int:id>') 55 def hello_itcast(id): 66 return 'hello itcast {}'.format(id)

Flask默认的转换器有以下几种

  • int::接受整数
  • float:同int,但是接受浮点数
  • path:和默认的相似,但也接受斜线

让Flask向Django一样拥有一个正则表达式匹配参数的功能

1 1 # 导入BasseConverter类,作为所有自定义转换器的父类 2 2 from werkzeug.routing import BaseConverter 3 3 4 4 5 5 # 定义自己的转换器,继承于BaseConvert类 6 6 class RegexConverter(BaseConverter): 7 7 def __init__(self, url_map, regex): 8 8 # 调用父类的构造方法 9 9 super().__init__(map=url_map) 1010 # 将正则表达式的参数保存到对象的属性中,flask会去使用这个属性来进行路由的正则匹配 1111 self.regex = regex 1212 1313 # 将自定义的转换器添加到flask的应用中 1414 app.url_map.converters['re'] = RegexConverter 1515 1616 # 然后就可以用了 re(r'regex'):mobile 的方式使用,如下 1717 # 这里匹配的是一个十一位的数字 1818 @app.route('/send/<re(r"\d{11}"):mobile>') 1919 def send_message(mobile): 2020 return 'send message to {}'.format(mobile)

通过上述方法,Flask的路由传递参数也可以像Django框架那样灵活的使用正则表达式了

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

Flask自定义转换器,实现路由匹配正则表达式参数 - HelloWorld