FastApi-12-Form表單

這是我參與8月更文挑戰的第12天,活動詳情查看:8月更文挑戰html

何爲 Form 表單

相信你必定聽過或者見過 HTMlform 元素,這裏所指的 Form 表單就是 FastApi 用來獲取 HTMLform 元素的對象。前端

在 FastApi 中使用 Form 表單

假設咱們須要開發一個登錄的界面,登錄頁面有一個 form 表單,其中包含用戶名和密碼兩個元素,咱們須要根據前端頁面傳回來的 form 表單內容來肯定是否登錄成功。python

項目結構

代碼

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/api

輸入正確的用戶名和密碼

輸入錯誤的用戶名和密碼

分析:咱們使用 FastApiForm 對象來接收前端傳過來的 form 表單對象。其中接收前端 form 表單對象時使用的變量名須要和 from 表單中的 name 保持一致。markdown

附: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 表單的基本用法。app

感謝您的閱讀,別忘了關注,點贊,評論,轉發四連喲!async

相關文章
相關標籤/搜索