当前位置: 首页 > news >正文

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

目录

    • 简单的例子
    • 手动类型转换
    • 自动类型转换
    • 自定义路由过滤器

简单的例子

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

from flask import Flaskapp = Flask(__name__)@app.get("/<value>")
def index(value):return str(2 == value)if __name__ == "__main__":app.run()
GET http://127.0.0.1:5000/2False

手动类型转换

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

from flask import Flaskapp = 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/2True

自动类型转换

Flask提供了内置的类型过滤器,可以直接转换成我们需要的类型,就不需要手动进行类型转换了


from flask import Flaskapp = 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/2True

支持的过滤类型

string: 默认的数据类型,接收没有任何斜杠"\ /"的字符串

int: 整型

float: 浮点型

path: 和string类型相似,但是接受斜杠,如:可以接受参数/aa/bb/cc/多条放在一起

uuid: 只接受uuid格式的字符串字符串,

自定义路由过滤器

继承BaseConverter类,实现两个转换方法即可


from flask import Flask, url_for
from werkzeug.routing import BaseConverterapp = 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,creturn str(value)if __name__ == "__main__":app.run()
GET http://127.0.0.1:5000/1,2,3['1', '2', '3']

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 电缆故障精准定位系统
  • 在CentOS中配置三个节点之间相互SSH免密登陆
  • 极狐GitLab如何启用和配置PlantUML?
  • 【Django】在vscode中运行调试Django项目(命令及图形方式)
  • 观成科技:活跃窃密木马TriStealer加密通信分析
  • setsockopt选项对tcp速度
  • HTTP 协议浅析
  • k8s 公共服务
  • 问题处理--No such file or directory
  • Springboot+Maven多模块项目开发
  • 构建稳固与安全的网络环境:从微软蓝屏事件看软件更新流程与应急响应
  • vue3中Composition API写法 <script setup>标签中哪些可以不用导入即可使用?
  • js箭头函数与普通函数的this指向问题
  • node和npm安装;electron、 electron-builder安装
  • React中引入使用本地图片
  • Android 架构优化~MVP 架构改造
  • C++11: atomic 头文件
  • echarts的各种常用效果展示
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • HomeBrew常规使用教程
  • JavaScript实现分页效果
  • java第三方包学习之lombok
  • JS函数式编程 数组部分风格 ES6版
  • Promise面试题,控制异步流程
  • Spring-boot 启动时碰到的错误
  • 初探 Vue 生命周期和钩子函数
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 基于游标的分页接口实现
  • 深入浏览器事件循环的本质
  • 手写双向链表LinkedList的几个常用功能
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • NLPIR智能语义技术让大数据挖掘更简单
  • ​Spring Boot 分片上传文件
  • #systemverilog# 之 event region 和 timeslot 仿真调度(十)高层次视角看仿真调度事件的发生
  • (02)Hive SQL编译成MapReduce任务的过程
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (2)nginx 安装、启停
  • (3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)
  • (33)STM32——485实验笔记
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (LLM) 很笨
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (windows2012共享文件夹和防火墙设置
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)ORM
  • .describe() python_Python-Win32com-Excel
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .NET 设计一套高性能的弱事件机制
  • .NET编程C#线程之旅:十种开启线程的方式以及各自使用场景和优缺点
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • ??javascript里的变量问题
  • @AliasFor 使用
  • @SuppressWarnings注解