持续创作,加速成长!这是我参与「掘金日新计划 · 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-multipart,pip3 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>