当前位置: 代码网 > it编程>前端脚本>Python > Python Flask自定义URL路由参数过滤器的方法详解

Python Flask自定义URL路由参数过滤器的方法详解

2024年07月24日 Python 我要评论
简单的例子先看一个简单的例子,get请求需要传递一个参数,我们直接获取的是字符串from flask import flaskapp = flask(__name__)@app.get("/<v

简单的例子

先看一个简单的例子,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路由参数内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com