Python
validator
@validator ile özel doğrulamayı öğrenirsin.
validator
@field_validator, bir alana özel doğrulama ekler. Eski @validator yerine Pydantic v2'de önerilen yoldur. Doğrulama işlevi değeri alır, denetler ve döndürür.
from pydantic import BaseModel, field_validator
class User(BaseModel):
name: str
@field_validator("name")
@classmethod
def short_name(cls, v):
if len(v) > 50:
raise ValueError("too long")
return v
İşlev @classmethod ile işaretlenir; ilk parametre cls, ikincisi değerdir. Hata yerine ValueError fırlatılır.
doğrulama işlevi
Doğrulama işlevi değeri denetler ve döndürür. Hata durumunda ValueError fırlatılır; Pydantic bunu bir doğrulama hatasına çevirir. Değer döndürmek zorunludur.
@field_validator("age")
@classmethod
def check_age(cls, v):
if v < 0:
raise ValueError("negatif olamaz")
return v # değer döndür
İşlev değeri dönüştürebilir de; örneğin bir dizeyi küçük harfe çevirip döndürebilir. Bu, veriyi normalleştirmek için yararlıdır.
Uygulama Özel doğrulamalı User modeli
from pydantic import BaseModel, field_validator ile başla. class User(BaseModel): tanımla; name: str alanını ekle. @field_validator("name") ve @classmethod dekoratörleriyle def short_name(cls, v): tanımla. İşlev if len(v) > 50: raise ValueError("too long") yapsın ve return v ile değeri döndürsün. u = User(name="Ayşe") ile örnek oluştur. print(u.name) ile adı yazdır.
Örnek çözümü göster
from pydantic import BaseModel, field_validator
class User(BaseModel):
name: str
@field_validator("name")
@classmethod
def short_name(cls, v):
if len(v) > 50:
raise ValueError("too long")
return v
u = User(name="Ayşe")
print(u.name)
Kendini test et
-
validator kavramlarını eşleştir
- @field_validator
- Doğrulama ekler
- @classmethod
- Sınıf metodu yapar
- cls
- Sınıf referansıdır
- ValueError
- Hata fırlatır
-
@field_validator işlevi hata durumunda hangi istisnayı fırlatır?
- TypeError
- ValueError
- IndexError
- KeyError
Cevabı göster
ValueError — ValueError fırlatılır; Pydantic bunu doğrulama hatasına çevirir.
-
field_validator dekoratörünü tamamla
from pydantic import BaseModel, field_validator
class User(BaseModel):
name: str
@____("name")
@classmethod
def short_name(cls, v):
return v
Cevabı göster
from pydantic import BaseModel, field_validator
class User(BaseModel):
name: str
@field_validator("name")
@classmethod
def short_name(cls, v):
return v
Sıradaki ders: Config