จากบทเรียน วิธีการรับค่าจาก form html ด้วย FastAPI

แชร์ความรู้ภาษา Python ไพทอน การเขียนโปรแกรมภาษาไพทอน

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
fonfonn
PHP VIP Members
PHP VIP Members
โพสต์: 4983
ลงทะเบียนเมื่อ: 11/07/2022 9:28 am

จากบทเรียน วิธีการรับค่าจาก form html ด้วย FastAPI

โพสต์ที่ยังไม่ได้อ่าน โดย fonfonn »

จากบทเรียน วิธีการรับค่าจาก form html ด้วย FastAPI

เริิ่มต้นจาก สร้าง directory ที่ชื่อว่า templates เพื่อเก็บไฟล์ html จากนั้น ทำการออกแบบหน้า html โดยในโค้ดด้านล่างนี้จะเป็นการออกแบบให้มีการเลือกไฟล์และปุ่ม Submit

โค้ด: เลือกทั้งหมด

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>FastApi</title>
</head>
<body>
        <form action="/submitform" method="post" enctype="multipart/form-data">
        <div class="flex-container">
            <select class="form-select" name="model" aria-label="select a model">
                <option value="1" selected>1st model 224*224</option>
                <option value="2">2nd model 90*96</option>
            </select>
            <input type="file" class="form-control" id="inputGroupFile02" name="file" required>
            <button type="submit" class="btn btn-primary mb-3">Submit</button>
        </div>
    </form>
</body>
</html>
จากนั้นไปที่ไฟล์ main.py ทำการ import FastAPI และ import uvicorn

โค้ด: เลือกทั้งหมด

from fastapi import FastAPI, Request,File, UploadFile, Form
from fastapi.responses import HTMLResponse
from fastapi.templating import Jinja2Templates
import uvicorn
จากนั้นเรียกใช้งาน FastAPI และ Jinja2Templates เพื่อเรียกใช้ไฟล์ html ที่เราสร้างไว้ ใน directory ที่ชื่อว่า templates

โค้ด: เลือกทั้งหมด

app =FastAPI()

templates = Jinja2Templates(directory="templates")
ต่อมาเป็นการใช้งาน get - method ในการเรียกใช้งานไล์ html โดย ในที่นี้ตั้งชื่อไฟล์ html ว่า index.html

โค้ด: เลือกทั้งหมด

@app.get("/predict/", response_class=HTMLResponse)
def index(request: Request):
    context = {'request':request}
    return templates.TemplateResponse("index.html",context)
เมื่อทำการสั่งรันด้วย

โค้ด: เลือกทั้งหมด

uvicorn main:app --reload

จะได้ผลลัพธ์คือ
  • ผลการสั่งรันหน้าจะได้หน้าhtmlที่สร้างขึ้นแล้ะจะเข้าถึงหน้านี้ด้วยพาร์ท /predict/
    ผลการสั่งรันหน้าจะได้หน้าhtmlที่สร้างขึ้น.png
    ผลการสั่งรันหน้าจะได้หน้าhtmlที่สร้างขึ้น.png (9.53 KiB) Viewed 467 times
จากน้้ันทำการ ใช้งาน post - method ในการการรับค่าจาก Form html

โค้ด: เลือกทั้งหมด

@app.post('/submitform')
async def handle_form(model:str = Form(...), file: UploadFile = File(...)):
    return {'model': model, 'file': file}
ผลการทำงาน
  • เมื่ออัพเดตจะได้ข้อความผลลัพธ์ตามภาพ
    เมื่อกดSubmit.png
    เมื่อกดSubmit.png (82.39 KiB) Viewed 467 times
you're the only one treasure💎
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 94