विषय पर बढ़ें

Form Models

🌐 एआई और मनुष्यों द्वारा किया गया अनुवाद

यह अनुवाद मनुष्यों के मार्गदर्शन में एआई द्वारा किया गया है। 🤝

इसमें मूल अर्थ को गलत समझने या अप्राकृतिक लगने आदि जैसी गलतियाँ हो सकती हैं। 🤖

आप हमें एआई LLM को बेहतर मार्गदर्शन करने में मदद करके इस अनुवाद को बेहतर बना सकते हैं।

अंग्रेज़ी संस्करण

आप FastAPI में form fields declare करने के लिए Pydantic models का उपयोग कर सकते हैं।

नोट

forms का उपयोग करने के लिए, पहले python-multipart install करें।

सुनिश्चित करें कि आप एक virtual environment बनाते हैं, उसे activate करते हैं, और फिर इसे install करते हैं, उदाहरण के लिए:

$ pip install python-multipart

नोट

यह FastAPI version 0.113.0 से supported है। 🤓

Forms के लिए Pydantic Models

आपको बस उन fields के साथ एक Pydantic model declare करना है जिन्हें आप form fields के रूप में receive करना चाहते हैं, और फिर parameter को Form के रूप में declare करना है:

from typing import Annotated

from fastapi import FastAPI, Form
from pydantic import BaseModel

app = FastAPI()


class FormData(BaseModel):
    username: str
    password: str


@app.post("/login/")
async def login(data: Annotated[FormData, Form()]):
    return data
🤓 Other versions and variants

Tip

Prefer to use the Annotated version if possible.

from fastapi import FastAPI, Form
from pydantic import BaseModel

app = FastAPI()


class FormData(BaseModel):
    username: str
    password: str


@app.post("/login/")
async def login(data: FormData = Form()):
    return data

FastAPI request में मौजूद form data से हर field के लिए data extract करेगा और आपको वह Pydantic model देगा जिसे आपने define किया है।

Docs जाँचें

आप इसे /docs पर docs UI में verify कर सकते हैं:

Extra Form Fields को मना करें

कुछ खास use cases में (शायद बहुत आम नहीं), आप form fields को केवल उन तक restrict करना चाह सकते हैं जो Pydantic model में declare किए गए हैं। और किसी भी extra fields को forbid करना चाह सकते हैं।

नोट

यह FastAPI version 0.114.0 से supported है। 🤓

आप किसी भी extra fields को forbid करने के लिए Pydantic की model configuration का उपयोग कर सकते हैं:

from typing import Annotated

from fastapi import FastAPI, Form
from pydantic import BaseModel

app = FastAPI()


class FormData(BaseModel):
    username: str
    password: str
    model_config = {"extra": "forbid"}


@app.post("/login/")
async def login(data: Annotated[FormData, Form()]):
    return data
🤓 Other versions and variants

Tip

Prefer to use the Annotated version if possible.

from fastapi import FastAPI, Form
from pydantic import BaseModel

app = FastAPI()


class FormData(BaseModel):
    username: str
    password: str
    model_config = {"extra": "forbid"}


@app.post("/login/")
async def login(data: FormData = Form()):
    return data

अगर कोई client कुछ extra data भेजने की कोशिश करता है, तो उन्हें एक error response मिलेगा।

उदाहरण के लिए, अगर client ये form fields भेजने की कोशिश करता है:

  • username: Rick
  • password: Portal Gun
  • extra: Mr. Poopybutthole

तो उन्हें एक error response मिलेगा जो बताएगा कि field extra allowed नहीं है:

{
    "detail": [
        {
            "type": "extra_forbidden",
            "loc": ["body", "extra"],
            "msg": "Extra inputs are not permitted",
            "input": "Mr. Poopybutthole"
        }
    ]
}

सारांश

आप FastAPI में form fields declare करने के लिए Pydantic models का उपयोग कर सकते हैं। 😎