CodeBlanks Logo Icon CodeBlanks

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.

Başlangıç kodu

main.py
# 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

main.py
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

Soru
from pydantic import BaseModel, field_validator

class User(BaseModel):
    name: str

    @____("name")
    @classmethod
    def short_name(cls, v):
        return v
Cevap
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.

İleri seviye bölümündeki tüm dersler