Flask中获取请求参数的一些方式总结
在 Flask 中,可以从 request 对象中获取各种类型的参数。以下是全面整理的获取参数的方式及示例代码。
1. 获取 URL 查询参数(Query String Parameters)
URL 中的查询参数通过 ?key=value&key2=value2 的形式传递,使用 request.args 获取。
示例:
from flask import Flask, requestapp = Flask(__name__)@app.route('/query')
def get_query_params():param1 = request.args.get('param1', default=None, type=str) # 获取单个参数param2 = request.args.getlist('param2') # 获取多个同名参数return f"param1: {param1}, param2: {param2}"# 测试 URL: http://127.0.0.1:5000/query?param1=value1¶m2=value2¶m2=value3
2. 获取表单数据(Form Data)
当请求方法为 POST 或 PUT 时,可以通过 request.form 获取表单数据。
示例:
@app.route('/form', methods=['POST'])
def get_form_data():name = request.form.get('name', default=None, type=str) # 获取单个参数age = request.form.get('age', default=0, type=int) # 获取并转换为整数return f"name: {name}, age: {age}"# 测试:使用 Postman 或 curl 提交表单数据
3. 获取 JSON 数据
当客户端发送 JSON 格式的数据时,可以使用 request.json 获取解析后的字典。
示例:
@app.route('/json', methods=['POST'])
def get_json_data():data = request.json # 获取 JSON 数据name = data.get('name', None)age = data.get('age', 0)return f"name: {name}, age: {age}"# 测试:使用 Postman 或 curl 提交 JSON 数据
# 请求头:Content-Type: application/json
# 请求体:{"name": "Alice", "age": 25}
4. 获取文件上传(File Uploads)
当上传文件时,可以通过 request.files 获取文件对象。
示例:
@app.route('/upload', methods=['POST'])
def upload_file():file = request.files.get('file') # 获取上传的文件if file:filename = file.filenamefile.save(f"./{filename}") # 保存文件到本地return f"File uploaded: {filename}"return "No file uploaded"# 测试:使用 Postman 或 curl 提交文件
5. 获取路径参数(Route Parameters)
路径参数是通过 URL 路径定义的动态部分,使用 <variable_name> 定义,并在函数中接收。
示例:
@app.route('/user/<username>')
def get_user(username):return f"Hello, {username}!"# 测试 URL: http://127.0.0.1:5000/user/Alice
6. 获取原始请求体(Raw Body)
如果需要直接获取请求的原始内容,可以使用 request.data 或 request.get_data()。
示例:
@app.route('/raw', methods=['POST'])
def get_raw_data():raw_data = request.data.decode('utf-8') # 获取并解码原始数据return f"Received raw data: {raw_data}"# 测试:提交任意格式的原始数据
7. 获取 Headers
通过 request.headers 获取请求头信息。
示例:
@app.route('/headers')
def get_headers():user_agent = request.headers.get('User-Agent') # 获取 User-Agenthost = request.headers.get('Host') # 获取 Hostreturn f"User-Agent: {user_agent}, Host: {host}"# 测试:访问任意 URL
8. 获取 Cookies
通过 request.cookies 获取客户端发送的 Cookie。
示例:
@app.route('/cookies')
def get_cookies():session_id = request.cookies.get('session_id', default=None) # 获取 Cookiereturn f"Session ID: {session_id}"# 测试:设置 Cookie 并访问
9. 获取 Method 类型
通过 request.method 获取当前请求的方法类型(如 GET, POST 等)。
示例:
@app.route('/method', methods=['GET', 'POST'])
def get_method():return f"Request method: {request.method}"# 测试:分别用 GET 和 POST 方法访问
10. 获取完整的 URL
通过 request.url 获取完整的请求 URL。
示例:
@app.route('/url')
def get_full_url():return f"Full URL: {request.url}"# 测试:访问任意 URL
总结
| 方式 | 使用场景 | 属性/方法 |
|---|---|---|
| 查询参数 | URL 中的键值对 | request.args |
| 表单数据 | HTML 表单提交 | request.form |
| JSON 数据 | 客户端发送 JSON 格式数据 | request.json |
| 文件上传 | 文件上传 | request.files |
| 路径参数 | 动态路由中的参数 | 函数参数 |
| 原始请求体 | 获取未解析的请求体 | request.data |
| Headers | 获取请求头信息 | request.headers |
| Cookies | 获取客户端发送的 Cookie | request.cookies |
| Method 类型 | 获取请求方法类型 | request.method |
| 完整 URL | 获取完整的请求 URL | request.url |
以上方法涵盖了 Flask 中从 request 对象获取参数的主要方式,根据实际需求选择合适的方式即可。
相关文章:
Flask中获取请求参数的一些方式总结
在 Flask 中,可以从 request 对象中获取各种类型的参数。以下是全面整理的获取参数的方式及示例代码。 1. 获取 URL 查询参数(Query String Parameters) URL 中的查询参数通过 ?keyvalue&key2value2 的形式传递,使用 reques…...
架构——LVS负载均衡主要模式及其原理、服务水平、优缺点
LVS(Linux Virtual Server)是一款高性能的开源负载均衡软件,支持多种负载均衡模式。以下是其主要模式及其原理、服务水平、优缺点: 1. NAT 模式(Network Address Translation) 原理: 请求流程…...
【漫话机器学习系列】093.代价函数和损失函数(Cost and Loss Functions)
代价函数和损失函数(Cost and Loss Functions)详解 1. 引言 在机器学习和深度学习领域,代价函数(Cost Function)和损失函数(Loss Function)是核心概念,它们决定了模型的优化方向。…...
Android 13 上通过修改 AOSP 拦截 SystemUI 音量调节事件
定位关键代码SystemUI 的音量调节逻辑主要集中在以下类中: VolumeDialogController.java:负责与 AudioService 交互。 VolumeDialogImpl.java:处理 UI 交互事件(如按钮点击)。 PhoneWindowManager.java:处理物理按键事件(如音量键)。 拦截音量调节事件 以 VolumeDialog…...
SQL与数据库程序设计
1.1986年,10月美国国家标准局颁布了SQL语言的美国标准,称为SQL86 2.SQL(Structured Query Language)又称为结构化查询语言 3.建立索引的主要目的是加快查找的速度 4.在基本表上建立一个或者多个索引 5. 一个基本表是最多只能建立一个聚簇索引 6.CAL…...
大模型Deepseek的使用_基于阿里云百炼和Chatbox
目录 前言1. 云服务商2. ChatBox参考 前言 上篇博文中探索了(本地)部署大语言模型,适合微调、数据高隐私性等场景。随着Deepseek-R1的发布,大语言模型的可及性得到极大提升,应用场景不断增加,对高可用的方…...
AlmaLinux9.5安装samba实现与Windows文件共享 笔记250214
Fedora41安装samba实现与Windows文件共享 笔记241202 步骤: 安装samba, 并启用 smb , nmb 服务 切换阿里源(可选) ### 备份 /etc/yum.repos.d 文件夹 tempUri/etc/yum.repos.d ; sudo cp -a $tempUri $tempUri.$(date %0y%0m%0d%0H%0M%0Sns%0N).bak sed -e s|^mirrorli…...
二〇二四年终总结
写在前面 简单总结一下告诉自己,曾经活着 不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候,眼前的风景已经和从前不一样了。——村上春树 原本应该 24 年年中的时候写 23 年年终的总结,但是一直拖着&…...
学习sql的资源:sql练习平台;在线编辑器,免费sql教程,免费sql书籍
sql练习平台 LeetCode力扣(部分免费) 题库 - 力扣 (LeetCode) 全球极客挚爱的技术成长平台 HackerRank 解决 SQL |黑客排名 SQLPad SQL、Python 和 R 面试问题 StrataScratch StrataScratch - Analytical Questions 数据雷mur Free SQL Tutorial for Data Analysts …...
宝塔和docker的区别
宝塔面板 vs Docker:区别、场景与互补使用指南 eepseek回答宝塔和docker的区别 好的,我现在需要回答用户关于宝塔面板和Docker之间的区别的问题。首先,我需要明确这两个工具各自的定义、功能以及它们适用的场景,这样才能准确比较…...
机器学习--实现多元线性回归
机器学习—实现多元线性回归 本节顺延机器学习--线性回归中的内容,进一步讨论多元函数的回归问题 y ′ h ( x ) w ⊤ ∙ x b y^{\prime}h(x)w^\top\bullet xb y′h(x)w⊤∙xb 其中, w T ⋅ x 就是 W 1 X 1 w 2 X 2 w 3 X 3 ⋯ w N X N \text{其中,}w^\math…...
【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter2-HTML 中的 JavaScript
二、HTML 中的 JavaScript 将 JavaScript 插入 HTML 的主要方法是使用<script>元素。 <script>元素有下列 8 个属性。 async:可选。表示应该立即开始下载脚本,但不能阻止其他页面动作,比如下载资源或等待其他脚本加载。只对外部…...
【人工智能】释放数据潜能:使用Featuretools进行自动化特征工程
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 特征工程是机器学习流程中至关重要的一步,它直接影响模型的性能。然而,手动特征工程既耗时又需要领域专业知识。Featuretools是一个强大的…...
算法——对比A*算法与IDA*算法
A*算法与IDA*算法详细解析 1. A*算法 核心思想: A*算法是一种启发式搜索算法,结合了Dijkstra算法的最短路径保证和贪心最佳优先搜索的高效导向性。其核心是评估函数 ( f(n) g(n) h(n) ),其中: ( g(n) ): 从起点到当前节点 ( …...
GitLab CI/CD 的配置详解:从零开始使用 .gitlab-ci.yml 文件
在现代软件开发中,CI/CD(持续集成与持续部署)已成为提高开发效率和代码质量的核心实践。GitLab CI/CD 提供了强大的功能,帮助开发者自动化构建、测试和部署应用程序。而 .gitlab-ci.yml 文件是 GitLab CI/CD 配置的关键所在&#…...
python语言进阶之函数
目录 前言 函数的创建和调用 函数创建 调用函数 参数传递 形式参数和实际参数 位置参数 数量必须与定义时一致 位置必须与定义时一致 关键字参数 为参数设置默认值 可变参数 **parameter 返回值 变量的作用域 局部变量 全局变量 匿名函数 前言 提到函数&…...
网络安全等级保护基本要求、测评要求、高风险判定指引综合梳理
网络安全等级保护基本要求、测评要求、高风险判定指引综合梳理 等级保护基本要求、测评要求、高风险判定指引综合梳理测评要求思维导图二级三级 花了些时间把网络安全等级保护涉及的以下三份标准文件进行了整理,以表格的形式进行展现,能帮助初学者更加直…...
JSON入门略要
JavaScript对象表示法(JavaScript Object Notation,JSON)已经成为RESTful接口设计中的事实标准。 JSON数据格式使得应用程序可以通过RESTful API等方式在网络上进行数据通信。 REST: 表现层状态转化(REpresentation State Transf…...
Python爬虫抓取数据时,如何设置请求头?
在Python爬虫中设置请求头是确保爬虫能够正常运行并获取目标数据的关键步骤之一。请求头可以帮助我们模拟浏览器行为,避免被目标网站识别为爬虫。以下是如何在Python爬虫中设置请求头的详细指南: 一、使用requests库设置请求头 requests库是Python中最…...
以若依移动端版为基础,实现uniapp的flowable流程管理
1.前言 此代码是若依移动端版为基础,实现flowable流程管理,支持H5、APP和微信小程序三端。其中,APP是在安卓在雷电模拟器环境下完成的,其他环境未测试,此文章中所提及的APP均指上述环境。移动端是需要配合若依前后端分…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)
macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 🍺 最新版brew安装慢到怀疑人生?别怕,教你轻松起飞! 最近Homebrew更新至最新版,每次执行 brew 命令时都会自动从官方地址 https://formulae.…...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
Linux系统部署KES
1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘…...
鸿蒙Navigation路由导航-基本使用介绍
1. Navigation介绍 Navigation组件是路由导航的根视图容器,一般作为Page页面的根容器使用,其内部默认包含了标题栏、内容区和工具栏,其中内容区默认首页显示导航内容(Navigation的子组件)或非首页显示(Nav…...
【阅读笔记】MemOS: 大语言模型内存增强生成操作系统
核心速览 研究背景 研究问题:这篇文章要解决的问题是当前大型语言模型(LLMs)在处理内存方面的局限性。LLMs虽然在语言感知和生成方面表现出色,但缺乏统一的、结构化的内存架构。现有的方法如检索增强生成(RA…...
