fastapi之Form

691 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第21天,点击查看活动详情

Form表单数据

  • 前端给后端放数据,请求体中的数据除了使用JSON格式,还可以使用Form表单形式
  • 使用Form表单传数据,会有两种编码格式:urlencoded和formdata
  • 一般传递普通键值对数据时使用urlencoded,上传图片/文件时使用formdata
  • fastapi提供了Form这个类型帮忙我们快速获取表单中的字段数据,使用Form就像使用Body/Query等。
 from fastapi import FastAPI, Form
 ​
 app = FastAPI()
 ​
 ​
 @app.post("/login/")
 async def login(username: str = Form(), password: str = Form()):
     return {"username": username}
  • 这个例子中,username和password的值都是一个Form,这样写的话,fastapi就知道了需要从Form表单中提取这两个字段。
  • 除此之外,还有数据校验、openapi等功能。

补充:

  • 在fastapi中使用Form,需要先安装第三方包: python-multipartpip3 install python-multipart
  • 后期想使用OAuth2做登录校验时,也需要使用表单字段username和password
  • HTTP协议中,请求体数据的编码格式只能有一种,即不能同时使用JSON格式和表单格式,他们不能同时使用。
  • Form表单其实是前端HTML中的一个标签(),它配合之input标签,可以像服务器发送Form表单数据

FORM之文本输入

 <form>
  First name:<br>
 <input type="text" name="firstname">
 <br>
  Last name:<br>
 <input type="text" name="lastname">
 </form> 

FORM之单选按钮输入

 <form>
 <input type="radio" name="sex" value="male" checked>Male
 <br>
 <input type="radio" name="sex" value="female">Female
 </form> 

FORM之提交按钮

 <form action="action_page.php">
 First name:<br>
 <input type="text" name="firstname" value="Mickey">
 <br>
 Last name:<br>
 <input type="text" name="lastname" value="Mouse">
 <br><br>
 <input type="submit" value="Submit">
 </form> 

FORM之action属性:指定要发送数据的后端接口

 <form action="/login">

FORM之method属性:指定请求类型,post/get

 <form action="login" method="GET">

FORM之name属性

 <form action="action_page.php">
 First name:<br>
 <input type="text" value="Mickey">
 <br>
 Last name:<br>
 <input type="text" name="lastname" value="Mouse">
 <br><br>
 <input type="submit" value="Submit">
 </form> 

完整的Form表单设置

 <form action="/login" method="GET" target="_blank" accept-charset="UTF-8"
 ectype="application/x-www-form-urlencoded" autocomplete="off" novalidate>
 .
 form elements
  .
 </form>