首页 > 其他分享 >三周精通FastAPI:14 表单数据和表单模型Form Models

三周精通FastAPI:14 表单数据和表单模型Form Models

时间:2024-10-26 14:20:19浏览次数:11  
标签:username 14 Form FastAPI 表单 str password

 官网文档:表单数据 - FastAPI

表单数据

接收的不是 JSON,而是表单字段时,要使用 Form表单

from fastapi import FastAPI, Form

app = FastAPI()


@app.post("/login/")
async def login(username: str = Form(), password: str = Form()):
    return {"username": username}

"说明"

要使用表单,需预先安装 python-multipart

例如,pip install python-multipart

导入 Form

from fastapi import FastAPI, Form

定义 Form 参数

@app.post("/login/")
async def login(username: str = Form(), password: str = Form()):
    return {"username": username}

例如,OAuth2 规范的 "密码流" 模式规定要通过表单字段发送 username 和 password

该规范要求字段必须命名为 username 和 password,并通过表单字段发送,不能用 JSON。

使用 Form 可以声明与 Body (及 QueryPathCookie)相同的元数据和验证。

"说明"

Form 是直接继承自 Body 的类。

"提示"

声明表单体要显式使用 Form ,否则,FastAPI 会把该参数当作查询参数或请求体(JSON)参数。

关于 "表单字段"

与 JSON 不同,HTML 表单(<form></form>)向服务器发送数据通常使用「特殊」的编码。

FastAPI 要确保从正确的位置读取数据,而不是读取 JSON。

"技术细节"

表单数据的「媒体类型」编码一般为 application/x-www-form-urlencoded

但包含文件的表单编码为 multipart/form-data。文件处理详见下节。

编码和表单字段详见 MDN Web 文档的 POST小节。

"警告"

可在一个路径操作中声明多个 Form 参数,但不能同时声明要接收 JSON 的 Body 字段。因为此时请求体的编码是 application/x-www-form-urlencoded,不是 application/json

这不是 FastAPI 的问题,而是 HTTP 协议的规定。

小结

本节介绍了如何使用 Form 声明表单数据输入参数。

表单模型


您可以使用Pydantic模型在FastAPI中声明表单字段。

资讯
要使用表单,请先安装python multipart。
确保您创建了一个虚拟环境,激活它,然后安装它,例如:

$ pip install python-multipart

注:
自FastAPI 0.113.0版本起支持此功能。

标签:username,14,Form,FastAPI,表单,str,password
From: https://blog.csdn.net/skywalk8163/article/details/143248450

相关文章

  • 2024版最新148款CTF工具整理大全(附下载安装包)含基础环境、Web 安全、加密解密、密码爆
    经常会有大学生粉丝朋友私信大白,想通过打CTF比赛镀金,作为进入一线互联网大厂的门票。但是在CTF做题很多的时候都会用到工具,所以在全网苦寻CTF比赛工具安装包!目录:一、基础环境二、常用工具三、Web安全四、加密解密六、文件工具七、隐写图片八、隐写音频九、隐写......
  • 直观解释注意力机制,Transformer的核心 | Chapter 6 | Deep Learning | 3Blue1Brown
    目录前言1.前情提要:词嵌入2.注意力是什么?Mole是什么?Tower又是什么?3.注意力模式:“一个毛茸茸的蓝色生物漫步于葱郁的森林”,名词与形容词,查询与键4.掩码:看前不看后5.上下文窗口大小6.值矩阵7.参数有多少8.交叉注意力9.多头注意力10.输出矩阵11.加深网络12.结语......
  • Springboot计算机毕业设计电商购物系统147r7
    Springboot计算机毕业设计电商购物系统本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能:用户,商品分类,商品品牌,商品信息开题报告内容一、项目背景与意义随着互联网技术的不断进步和电子商务的快......
  • Springboot计算机毕业设计电商购物系统147r7
    Springboot计算机毕业设计电商购物系统147r7本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能:用户,商品分类,商品品牌,商品信息开题报告内容一、项目背景与意义随着互联网技术的快速发展,电子商务已......
  • 什么是Gradle Transform
    GradleTransform是一个在Android构建过程中用于修改或生成字节码和资源的特殊API。核心功能主要有:1、字节码操作,用于直接更改编译后的.class文件;2、资源文件修改,可以更改或添加资源文件;3、依赖解析,用于管理和操纵项目依赖。字节码操作特别重要,因为它允许开发者在编译阶段注入......
  • .obj file format limit
    .obj文件保存的内容非常有限:顶点、纹理坐标(最多一套)、法线、三角面;它不支持顶点色、多套纹理坐标(uv2,uv3)、TANGENT、BINORMAL、骨骼权重。搜索某度,被其内容所误导,花费不少时间搜索.obj文件支持多套纹理坐标方式,未果!后在Blender中尝试导出带有2套纹理坐标的模型,.obj中只......
  • 题解:P11143 「SFMOI Round I」Strange Cake Game
    题目思路考虑贪心算法。根据题意,我们可以猜出结论,在最优状态下,小W将一直向下移动,小M一定向右移动。又因为小W是先手,所以当这块巧克力的横坐标小于等于纵坐标,即\(x\ley\)时,这块巧克力才可能归小W所有。另外,本题还有某些神秘做法可得\(20-25\)分。要特别注意的是......
  • [USACO1.2] 方块转换 Transformations 题目解析
    洛谷P1205[USACO1.2]方块转换Transformations题目解析题目描述一块n×nn\timesnn×n正方形的黑白瓦......
  • (9-4)基于Diffusion Transformer的文生图系统:生成图像
    9.6 生成图像在本项目中,使用分布式数据并行(DDP)在多个GPU上进行训练,以生成高质量的图像。通过对输入数据进行处理和增强,将图像输入到深度学习模型中,使用自适应动量估计(EMA)来优化模型参数,并最终将生成的图像保存到指定路径。这一流程支持大规模数据集,旨在提升训练效率和图像......
  • 【408真题】2014-46
    “接”是针对题目进行必要的分析,比较简略;“化”是对此题型的解题套路总结,并结合历年真题或者典型例题进行运用。涉及到的知识全部来源于王道各科教材(2025版)(408神功练成中……)文章目录一、接:本题分析二、化:套路总结一、接:本题分析2014-46分析【答】1)【标......