前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FastAPI后台开发基础(11): Form 表单数据使用

FastAPI后台开发基础(11): Form 表单数据使用

原创
作者头像
bowenerchen
发布2024-10-24 09:39:36
1270
发布2024-10-24 09:39:36
举报
文章被收录于专栏:编码视界

示例代码

简单的表单数据

代码语言:python
代码运行次数:0
复制
@app.post("/login/")
async def login(data_a: Annotated[str, Form()], data_b: Annotated[str, Form()]):
    return {"username": data_a, "password": data_b}
提交表单数据
提交表单数据

复杂表单数据

代码语言:python
代码运行次数:0
复制
class FormDataModel(BaseModel):
    user_name: str
    age: int
    gender: Gender
    birthday: datetime.date


@app.post('/register')
async def register(user_info: Annotated[FormDataModel, Form()]):
    h = hashlib.sha3_512(user_info.model_dump_json().encode('utf-8'))
    return {'user_id': h.hexdigest(), 'sign': h.name, 'details': user_info.model_dump_json()}
表单参数文档
表单参数文档
提交复杂的表单参数
提交复杂的表单参数

关于表单参数

为什么需要 Form

  • 兼容传统表单提交:在 Web 开发中,表单数据通常通过 application/x-www-form-urlencoded 或 multipart/form-data(用于文件上传)格式提交,这是 HTML 表单的标准提交方式,Form 参数专门用于处理这种类型的数据
  • 简化客户端代码:对于不使用 JavaScript 或复杂前端框架的简单网页来说,直接从 HTML 表单提交数据到后端是非常直接和简单的使用 Form 可以直接接收这些数据,而无需在客户端进行任何额外的处理
  • 安全性:Form 数据通常用于登录、注册等操作,这些操作可能需要 CSRF 保护许多 Web 框架提供了针对传统表单的 CSRF 保护机制

为什么不总是用 Body 替换 Form

  • 内容类型不同:Body 通常用于处理 JSON 数据(application/json),这在现代 Web 应用中非常常见,特别是在单页面应用(SPA)和移动应用中而 Form 用于处理 application/x-www-form-urlencoded 或 multipart/form-data 数据
  • 处理复杂性:虽然你可以通过 Body 接收原始数据并手动解析 application/x-www-form-urlencoded 或 multipart/form-data 数据,但这增加了处理的复杂性。使用 Form 可以让框架自动处理这些复杂性
  • 前端适配:如果前端已经设计为发送 JSON 数据,使用 Body 是更自然的选择 如果是传统的 Web 表单,使用 Form 更为合适

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 示例代码
    • 简单的表单数据
      • 复杂表单数据
      • 关于表单参数
        • 为什么需要 Form
          • 为什么不总是用 Body 替换 Form
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档