API & Backend

Pydantic v2 ile Rust Destekli Validasyon ve Custom Validator Teknikleri

Pydantic v2'nin Rust tabanlı pydantic-core çekirdeği ile 20 kata varan hız artışları, @field_validator ve model_validator kullanım desenleri.

3 dk

Pydantic v2'deki Kritik Değişiklikler

Eski `@validator` dekoratörü yerine `@field_validator(mode='before'|'after')` ve tüm modeli doğrulayan `@model_validator` gelmiştir.

schema.py
from pydantic import BaseModel, field_validator, model_validator

class UserRegisterSchema(BaseModel):
    username: str
    password: str
    confirm_password: str

    @field_validator("username")
    @classmethod
    def validate_username(cls, v: str) -> str:
        if not v.isalnum():
            raise ValueError("Kullanıcı adı sadece alfanümerik olmalıdır")
        return v.lower()

    @model_validator(mode="after")
    def check_passwords_match(self) -> "UserRegisterSchema":
        if self.password != self.confirm_password:
            raise ValueError("Şifreler birbiriyle eşleşmiyor")
        return self