Python:Flask自定义URL路由参数过滤器

目录

简单的例子

先看一个简单的例子,GET请求需要传递一个参数,我们直接获取的是字符串

python 复制代码
from flask import Flask

app = Flask(__name__)


@app.get("/<value>")
def index(value):
    return str(2 == value)


if __name__ == "__main__":
    app.run()
复制代码
GET http://127.0.0.1:5000/2

False

手动类型转换

需要获取数值,需要进行类型转换

python 复制代码
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提供了内置的类型过滤器,可以直接转换成我们需要的类型,就不需要手动进行类型转换了

python 复制代码
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类,实现两个转换方法即可

python 复制代码
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']
相关推荐
Ronin3057 分钟前
【C++】类型转换
开发语言·c++
之歆21 分钟前
Python-封装和解构-set及操作-字典及操作-解析式生成器-内建函数迭代器-学习笔记
笔记·python·学习
mrbone1123 分钟前
Git-git worktree的使用
开发语言·c++·git·cmake·worktree·gitab
浪裡遊34 分钟前
Sass详解:功能特性、常用方法与最佳实践
开发语言·前端·javascript·css·vue.js·rust·sass
真实的菜41 分钟前
JVM类加载系统详解:深入理解Java类的生命周期
java·开发语言·jvm
代码讲故事1 小时前
多种方法实现golang中实现对http的响应内容生成图片
开发语言·chrome·http·golang·图片·快照·截图
天天爱吃肉82181 小时前
ZigBee通信技术全解析:从协议栈到底层实现,全方位解读物联网核心无线技术
python·嵌入式硬件·物联网·servlet
虾球xz2 小时前
CppCon 2018 学习:EFFECTIVE REPLACEMENT OF DYNAMIC POLYMORPHISM WITH std::variant
开发语言·c++·学习
Allen_LVyingbo2 小时前
Python常用医疗AI库以及案例解析(2025年版、上)
开发语言·人工智能·python·学习·健康医疗
小哈龙2 小时前
裸仓库 + Git Bash 搭建 本地 Git 服务端与客户端
开发语言·git·bash