validator
- Python kursu
- İleri seviye
- Ders 57/83
- 5 dk
@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.
Başlangıç kodu
# pydantic'den BaseModel ve field_validator'ı içe aktar
# User sınıfını tanımla (name alanı)
# field_validator ile name alanına doğrulama ekle (uzunluk 50'den küçük olmalı)
# doğrulama işlevi cls ve v parametreleriyle, ValueError fırlatsın
# bir User örneği oluştur ve adını yazdırÖrnek çözüm
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)Beklenen çıktı
Ayşe
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 validator kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
@field_validator |
Doğrulama ekler |
@classmethod |
Sınıf metodu yapar |
cls |
Sınıf referansıdır |
ValueError |
Hata fırlatır |
2 @field_validator işlevi hata durumunda hangi istisnayı fırlatır?
- TypeError
- ValueError Doğru cevap
- IndexError
- KeyError
Açıklama: ValueError fırlatılır; Pydantic bunu doğrulama hatasına çevirir.
3 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
from pydantic import BaseModel, field_validator
class User(BaseModel):
name: str
@field_validator("name")
@classmethod
def short_name(cls, v):
return v
Açıklama: @field_validator('name') ile alan doğrulama eklenir.