Pydantic फ़ील्ड सत्यापन और वैलिडेटर
उन्नत फ़ील्ड सत्यापन विकल्पों का अध्ययन करें और जटिल व्यावसायिक नियमों के लिए कस्टम वैलिडेटर बनाएँ।
Pydantic फ़ील्ड सत्यापन और वैलिडेटर, CoddyKit पर FastAPI बैकएंड डेवलपमेंट बूटकैंप का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह FastAPI बैकएंड डेवलपमेंट बूटकैंप सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। FastAPI बैकएंड डेवलपमेंट बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
Pydantic से सत्यापन क्यों करें?
Pydantic आपके मॉडलों में डेटा प्रकारों का स्वतः सत्यापन करता है। लेकिन कभी-कभी आपको अधिक विशिष्ट नियमों की आवश्यकता होती है, जैसे उपयोगकर्ता नाम की न्यूनतम लंबाई या आयु का धनात्मक होना।
यहीं फ़ील्ड सत्यापन और कस्टम सत्यापक काम आते हैं! ये सुनिश्चित करते हैं कि आपका डेटा आपके अनुप्रयोग के सभी व्यावसायिक नियमों का पालन करे, जिससे आपके API अधिक विश्वसनीय बनते हैं।
Pydantic के `Field` फ़ंक्शन का उपयोग
Pydantic का Field फ़ंक्शन मॉडल फ़ील्ड में अतिरिक्त सत्यापन नियम और मेटाडेटा जोड़ने की सुविधा देता है। इसे pydantic से आयात किया जाता है। आइए देखें कि स्ट्रिंग की न्यूनतम और अधिकतम लंबाई कैसे लागू की जाती है।
from pydantic import BaseModel, Field
class User(BaseModel):
username: str = Field(min_length=3, max_length=15)
age: int
# Valid
try:
user1 = User(username="coddy", age=25)
print(f"Valid username: {user1.username}")
except Exception as e:
print(e)
# Invalid username (too short)
try:
user2 = User(username="c", age=30)
except Exception as e:
print(f"Error: {e}")संख्यात्मक फ़ील्ड नियम
संख्याओं के लिए Field शक्तिशाली तुलना सत्यापक प्रदान करता है:
gt(से बड़ा)lt(से छोटा)ge(से बड़ा या उसके बराबर)le(से छोटा या उसके बराबर)
संख्यात्मक डेटा के लिए मान्य सीमाएँ निर्धारित करने हेतु इनका उपयोग करें, ताकि मान हमेशा अपेक्षित सीमा के भीतर रहें।
from pydantic import BaseModel, Field
class Product(BaseModel):
name: str
price: float = Field(gt=0, le=1000) # Price > 0 and <= 1000
stock: int = Field(ge=0) # Stock >= 0
# Valid
try:
product1 = Product(name="Book", price=19.99, stock=100)
print(f"{product1.name} price: {product1.price}")
except Exception as e:
print(e)
# Invalid price (negative)
try:
product2 = Product(name="Pen", price=-5.0, stock=50)
except Exception as e:
print(f"Error: {e}")फ़ील्ड सत्यापन के लिए Regex
Field में मौजूद pattern तर्क आपको नियमित अभिव्यक्ति के आधार पर स्ट्रिंग फ़ील्ड का सत्यापन करने देता है। यह उत्पाद कोड, क्रमांक या जटिल पहचानकर्ताओं जैसे विशिष्ट प्रारूप लागू करने के लिए उपयोगी है।
from pydantic import BaseModel, Field
class ItemCode(BaseModel):
# Code must be three uppercase letters, a hyphen, then four digits
code: str = Field(pattern=r"^[A-Z]{3}-\d{4}$") # e.g., ABC-1234
# Valid
try:
item1 = ItemCode(code="XYZ-9876")
print(f"Valid code: {item1.code}")
except Exception as e:
print(f"Error: {e}")
# Invalid format (lowercase letters)
try:
item2 = ItemCode(code="abc-1234")
except Exception as e:
print(f"Error: {e}")कस्टम सत्यापक बनाना
हालाँकि Field कई सामान्य स्थितियों को संभालता है, कभी-कभी आपको अधिक जटिल सत्यापन तर्क की आवश्यकता होती है, जिसमें कस्टम Python कोड शामिल होता है। ऐसी स्थिति में Pydantic का @validator डेकोरेटर बहुत उपयोगी होता है।
आप अपने BaseModel के भीतर एक विधि परिभाषित करके उसे @validator('field_name') से सजाकर उस विशिष्ट फ़ील्ड पर कस्टम तर्क लागू कर सकते हैं।
फ़ील्ड के लिए कस्टम तर्क
आइए ऐसा कस्टम सत्यापक बनाएँ जो सुनिश्चित करे कि password फ़ील्ड जटिलता की विशिष्ट आवश्यकताओं को पूरा करता हो, जैसे उसमें कम-से-कम एक अंक होना। सत्यापक फ़ंक्शन फ़ील्ड का मान तर्क के रूप में प्राप्त करता है।
from pydantic import BaseModel, validator
import re
class UserAuth(BaseModel):
username: str
password: str
@validator('password')
def password_has_digit(cls, v):
if not re.search(r"\d", v):
raise ValueError('password must contain at least one digit')
return v
# Valid
try:
user1 = UserAuth(username="coder", password="MySecureP@ss1")
print(f"Password OK for {user1.username}")
except Exception as e:
print(f"Error: {e}")
# Invalid password (no digits)
try:
user2 = UserAuth(username="test", password="NoDigitsHere!")
except Exception as e:
print(f"Error: {e}")`pre=True` के साथ डेटा रूपांतरण
कभी-कभी आपको Pydantic के मानक प्रकार सत्यापन या अन्य सत्यापकों के चलने से पहले आने वाले डेटा को बदलने या साफ़ करने की आवश्यकता होती है। इसके लिए @validator('field_name', pre=True) का उपयोग करें।
एक सामान्य उपयोग यह है कि सामग्री का सत्यापन करने से पहले रिक्त स्थान हटाए जाएँ या अक्षरों का केस बदला जाए, जिससे डेटा में एकरूपता बनी रहे।
from pydantic import BaseModel, validator
class SearchQuery(BaseModel):
query: str
@validator('query', pre=True)
def strip_whitespace(cls, v):
if isinstance(v, str):
return v.strip()
return v # Pydantic will handle type validation later
# Input with leading/trailing spaces
query1 = SearchQuery(query=" python tutorial ")
print(f"Cleaned query: '{query1.query}'")
# Input without spaces
query2 = SearchQuery(query="fastapi")
print(f"Cleaned query: '{query2.query}'")फ़ील्ड सत्यापकों को क्रम से लागू करना
आप एक ही फ़ील्ड पर कई @validator डेकोरेटर लागू कर सकते हैं। वे उसी क्रम में चलेंगे जिस क्रम में उन्हें परिभाषित किया गया है। इससे आप सत्यापन तर्क को क्रमबद्ध रूप से जोड़ सकते हैं और अपने मॉडलों को अधिक मजबूत बना सकते हैं।
सूची वाले फ़ील्ड के लिए each_item=True का उपयोग करें, ताकि सत्यापक सूची के प्रत्येक तत्व पर लागू हो।
from pydantic import BaseModel, validator
class TagList(BaseModel):
tags: list[str]
@validator('tags', each_item=True)
def tag_must_be_lowercase(cls, v):
if v != v.lower():
raise ValueError('tag must be lowercase')
return v
@validator('tags', each_item=True)
def tag_min_length(cls, v):
if len(v) < 2:
raise ValueError('tag must be at least 2 chars')
return v
# Valid
try:
tags1 = TagList(tags=["python", "fastapi"])
print(f"Tags OK: {tags1.tags}")
except Exception as e:
print(f"Error: {e}")
# Invalid (uppercase and too short)
try:
tags2 = TagList(tags=["PY", "a"])
except Exception as e:
print(f"Error: {e}")रूट सत्यापकों से क्रॉस-फ़ील्ड सत्यापन
कभी-कभी किसी फ़ील्ड की वैधता दूसरे फ़ील्ड या कई अन्य फ़ील्ड के मान पर निर्भर करती है। इसे क्रॉस-फ़ील्ड सत्यापन कहते हैं। Pydantic का @root_validator आपको पूरे मॉडल के डेटा शब्दकोश का एक साथ सत्यापन करने देता है।
यह start_date को end_date से पहले सुनिश्चित करने या password और confirm_password के समान होने जैसी स्थितियों में उपयोगी है।
रूट सत्यापक का उपयोग
@root_validator पूरे मॉडल का डेटा शब्दकोश के रूप में प्राप्त करता है। फ़ील्ड-विशिष्ट सत्यापन से पहले या बाद में चलाने के लिए आप pre=True या pre=False (डिफ़ॉल्ट) का उपयोग कर सकते हैं। क्रॉस-फ़ील्ड जाँच के लिए सामान्यतः सत्यापन के बाद चलाना (डिफ़ॉल्ट) बेहतर होता है।
from pydantic import BaseModel, root_validator, ValidationError
class Registration(BaseModel):
email: str
password: str
password_confirm: str
@root_validator()
def passwords_match(cls, values):
pw1, pw2 = values.get('password'), values.get('password_confirm')
if pw1 is not None and pw2 is not None and pw1 != pw2:
raise ValueError('passwords do not match')
return values
# Valid
try:
reg1 = Registration(email="a@b.com", password="P@ssword1", password_confirm="P@ssword1")
print("Registration valid!")
except ValidationError as e:
print(f"Error: {e}")
# Invalid (passwords don't match)
try:
reg2 = Registration(email="x@y.com", password="P@ssword1", password_confirm="P@ssword2")
except ValidationError as e:
print(f"Error: {e}")सत्यापन जाँच
उपयोगकर्ता प्रोफ़ाइल के लिए निम्नलिखित Pydantic मॉडल पर विचार करें:
from pydantic import BaseModel, Field, validator
import re
class UserProfile(BaseModel):
username: str = Field(min_length=5, max_length=20)
email: str
age: int = Field(gt=18)
bio: str = ""
@validator('email')
def validate_email_format(cls, v):
if not re.match(r"[^@]+@[^@]+\.[^@]+", v):
raise ValueError('Invalid email format')
return vनिम्नलिखित में से कौन-सा JSON इनपुट UserProfile के लिए मान्य होगा?
पुनरावलोकन: सत्यापन में निपुणता
आपने सीखा कि अपने डेटा मॉडलों को वास्तव में मजबूत कैसे बनाया जाता है!
Field: न्यूनतम/अधिकतम लंबाई, संख्यात्मक सीमाओं और Regex पैटर्न जैसे अंतर्निहित नियमों के लिए।@validator: अलग-अलग फ़ील्ड के लिए कस्टम तर्क लागू करने हेतु; शुरुआती रूपांतरण के लिएpre=Trueका उपयोग किया जाता है।@root_validator: कई फ़ील्ड पर निर्भर जटिल क्रॉस-फ़ील्ड सत्यापन के लिए।
ये उपकरण आपको सटीक नियम निर्धारित करने की शक्ति देते हैं और आपके FastAPI अनुप्रयोगों में डेटा की अखंडता सुनिश्चित करते हैं। और भी विश्वसनीय API बनाने के लिए अभ्यास करते रहें!
एआई शिक्षक के साथ FastAPI बैकएंड डेवलपमेंट बूटकैंप सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 21
- पाठ
- 84
अक्सर पूछे जाने वाले प्रश्न
क्या “Pydantic फ़ील्ड सत्यापन और वैलिडेटर” पाठ निःशुल्क है?
हाँ — FastAPI बैकएंड डेवलपमेंट बूटकैंप अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Pydantic फ़ील्ड सत्यापन और वैलिडेटर” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। FastAPI बैकएंड डेवलपमेंट बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Pydantic फ़ील्ड सत्यापन और वैलिडेटर” में मैं क्या सीखूँगा?
उन्नत फ़ील्ड सत्यापन विकल्पों का अध्ययन करें और जटिल व्यावसायिक नियमों के लिए कस्टम वैलिडेटर बनाएँ। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ FastAPI बैकएंड डेवलपमेंट बूटकैंप का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या FastAPI बैकएंड डेवलपमेंट बूटकैंप शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर FastAPI बैकएंड डेवलपमेंट बूटकैंप शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“Pydantic फ़ील्ड सत्यापन और वैलिडेटर” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस FastAPI बैकएंड डेवलपमेंट बूटकैंप पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर FastAPI बैकएंड डेवलपमेंट बूटकैंप पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Pydantic फ़ील्ड सत्यापन और वैलिडेटर
- कस्टम डेटा प्रकार और सेटिंग्स
- नेस्टेड मॉडल और पुनरावर्ती संरचनाएँ
- model_dump और उपनामों के साथ सीरियलाइज़ेशन