简单的例子
先看一个简单的例子,get请求需要传递一个参数,我们直接获取的是字符串
from flask import flask app = flask(__name__) @app.get("/<value>") def index(value): return str(2 == value) if __name__ == "__main__": app.run()
手动类型转换
需要获取数值,需要进行类型转换
from flask import flask app = flask(__name__) @app.get("/<value>") def index(value): # return str(2 == value) return str(2 == int(value)) if __name__ == "__main__": app.run()
get http://127.0.0.1:5000/2 true
自动类型转换
flask提供了内置的类型过滤器,可以直接转换成我们需要的类型,就不需要手动进行类型转换了
from flask import flask app = flask(__name__) @app.get("/<int:value>") def index(value): # return str(2 == int(value)) return str(2 == value) if __name__ == "__main__": app.run()
get http://127.0.0.1:5000/2 true
支持的过滤类型
string
: 默认的数据类型,接收没有任何斜杠"\ /"的字符串
int
: 整型
float
: 浮点型
path
: 和string类型相似,但是接受斜杠,如:可以接受参数/aa/bb/cc/多条放在一起
uuid
: 只接受uuid格式的字符串字符串,
自定义路由过滤器
继承baseconverter
类,实现两个转换方法即可
from flask import flask, url_for from werkzeug.routing import baseconverter app = flask(__name__) # 定义转换器 class listconverter(baseconverter): def to_python(self, value): """解析url参数""" return value.split(',') def to_url(self, value): """转为url参数""" return ','.join(value) # 注册 app.url_map.converters['list'] = listconverter @app.get("/<list:value>") def index(value): print(url_for('index', value=['a', 'b', 'c'])) # 输出:/a,b,c return str(value) if __name__ == "__main__": app.run()
get http://127.0.0.1:5000/1,2,3 ['1', '2', '3']
到此这篇关于python flask自定义url路由参数过滤器的方法详解的文章就介绍到这了,更多相关flask自定义url路由参数内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论