FastApi-12-Form表单

简介: FastApi-12-Form表单

何为 Form 表单


相信你一定听过或者见过 HTMlform 元素,这里所指的 Form 表单就是 FastApi 用来获取 HTMLform 元素的对象。


在 FastApi 中使用 Form 表单


假设我们需要开发一个登陆的界面,登陆页面有一个 form 表单,其中包含用户名和密码两个元素,我们需要根据前端页面传回来的 form 表单内容来确定是否登陆成功。


项目结构


网络异常,图片无法展示
|


代码


from fastapi import FastAPI
# 导入Request上下文对象,用来在前后台之间传递参数
from starlette.requests import Request
# 导入jinja2模板引擎对象,用于后续使用
from starlette.templating import Jinja2Templates
app=FastAPI()
# 实例化一个模板引擎对象,指定模板所在路径
templates=Jinja2Templates(directory='templates')
# 定义主页函数,返回登陆页面
@app.get('/')
async def welcome(request:Request):
    return templates.TemplateResponse(name='login.html',context={'request':request})
# 导入Form表单
from fastapi import Form
@app.post('/login/')
# 视图函数接收post请求体中的Form表单元素
async def login(request:Request,username=Form(...),pwd=Form(...)):
    # 登陆逻辑演示
    if username=='phyger' and pwd =='phyger666':
        return templates.TemplateResponse(name='index.html',context={'request':request,'result':'SUCCESS'})
    else:
        return templates.TemplateResponse(name='index.html',context={'request':request,'result':'FAILED'})
if __name__ == '__main__':
    import uvicorn
    uvicorn.run(app='main:app',host='127.0.0.1',port=8765,reload=True)
复制代码


打开首页


http://localhost:8765/


网络异常,图片无法展示
|


输入正确的用户名和密码


网络异常,图片无法展示
|


输入错误的用户名和密码


网络异常,图片无法展示
|


分析:我们使用 FastApiForm 对象来接收前端传过来的 form 表单对象。其中接收前端 form 表单对象时使用的变量名需要和 from 表单中的 name 保持一致。


附:login.html


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Login</title>
</head>
<body>
    <form action="/login/" enctype="application/x-www-form-urlencoded" method="POST">
    <table>
        <tbody>
            <tr><td>用户名:</td><td><input type="text" name="username"></td></tr>
            <tr><td>密码:</td><td><input type="password" name="pwd"></td></tr>
        </tbody>
    </table>
    <input type='submit' style="font-size: medium;">
    </form>
</body>
</html>
复制代码


以上,我们简单演示了 FastApi 处理 Form 表单的基本用法。


感谢您的阅读,别忘了关注,点赞,评论,转发四连哟!

相关文章
|
JSON API 数据安全/隐私保护
FastAPI(23)- 详解 Form,发送表单数据
FastAPI(23)- 详解 Form,发送表单数据
669 0
FastAPI(23)- 详解 Form,发送表单数据
|
开发框架 JSON 数据格式
FastAPI 学习之路(十八)表单与文件
FastAPI 学习之路(十八)表单与文件
FastAPI 学习之路(十八)表单与文件
|
开发框架 数据安全/隐私保护
FastAPI 学习之路(十六)Form表单
FastAPI 学习之路(十六)Form表单
FastAPI 学习之路(十六)Form表单
|
存储 JSON 数据格式
fastapi 请求文件 / 表单 / 处理错误 / 路径操作配置 / jsonable_encoder
fastapi 请求文件 / 表单 / 处理错误 / 路径操作配置 / jsonable_encoder
446 0
fastapi 请求文件 / 表单 / 处理错误 / 路径操作配置 / jsonable_encoder
|
JSON 数据库 数据安全/隐私保护
fastapi 响应模型 / 响应状态码 / 表单参数
fastapi 响应模型 / 响应状态码 / 表单参数
288 0
fastapi 响应模型 / 响应状态码 / 表单参数
|
NoSQL 测试技术 Redis
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
|
存储 测试技术 数据安全/隐私保护
FastAPI(八十三)实战开发《在线课程学习系统》--注册接口单元测试
FastAPI(八十三)实战开发《在线课程学习系统》--注册接口单元测试
FastAPI(八十三)实战开发《在线课程学习系统》--注册接口单元测试
|
测试技术 数据安全/隐私保护
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(上)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(上)
FastAPI(八十二)实战开发《在线课程学习系统》接口开发-- 课程上架下架
FastAPI(八十二)实战开发《在线课程学习系统》接口开发-- 课程上架下架
|
NoSQL Redis 数据库
FastAPI(八十一)实战开发《在线课程学习系统》接口开发-- 推荐课程列表与课程点赞
FastAPI(八十一)实战开发《在线课程学习系统》接口开发-- 推荐课程列表与课程点赞

热门文章

最新文章