0Pricing
FastAPI Backend Development Bootcamp · Ders

Özel Veri Türleri ve Ayarlar

Özel Pydantic veri türleri tanımlayın ve Pydantic'in `BaseSettings` özelliğini kullanarak uygulama ayarlarını yönetin.

Özel Veri Türleri ve Ayarlar, CoddyKit'te ücretsiz bir FastAPI Backend Development Bootcamp dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, FastAPI Backend Development Bootcamp öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. FastAPI Backend Development Bootcamp kursu toplamda 4 dersten oluşur.

Welcome to Custom Types!

Pydantic veri doğrulaması için harikadır, ancak bazen yerleşik türlerinin ötesinde doğrulamaya ihtiyaç duyarsınız.

  • Özel Veri Türleri, verileriniz için kendi kurallarınızı tanımlamanıza olanak tanır.
  • Bu, verilerinizin belirli biçimlere veya iş mantığına uymasını sağlar.
  • Bunu, Pydantic'in gücünü benzersiz ihtiyaçlar için genişletmek olarak düşünebilirsiniz.

`Annotated` for Custom Validation

Pydantic v2, özel türler oluşturmak için Python'ın typing.Annotated yapısını doğrulayıcı işlevlerle birlikte kullanır.

  • Annotated: Bir tür ipucuna meta veri ekler.
  • BeforeValidator: Bir işlevi Pydantic'in standart doğrulamasından önce çalıştırır.
  • Bu, girdi verilerini atanmadan önce dönüştürmenize veya doğrulamanıza olanak tanır.

Crafting a `CapitalizedString`

İlk harfinin her zaman büyük harf olmasını sağlayan CapitalizedString adında özel bir tür oluşturalım.

Doğrulayıcı fonksiyonumuz bu kuralı kontrol edecektir. Eğer metin büyük harfle başlamıyorsa, bir hata verecektir.

Using Your Custom Type

Yeni CapitalizedString türümüzü bir Pydantic modelinde nasıl tanımlayıp kullanacağınız aşağıda açıklanmıştır. Doğrulama hatasını görmek için name değerini küçük harfle başlayacak şekilde değiştirmeyi deneyin!

from typing import Annotated
from pydantic import BaseModel, BeforeValidator, ValidationError

def validate_capitalized(v: str) -> str:
    if not isinstance(v, str):
        raise TypeError("String required")
    if v and not v[0].isupper():
        raise ValueError("Must start with uppercase")
    return v

CapitalizedString = Annotated[str, BeforeValidator(validate_capitalized)]

class Product(BaseModel):
    name: CapitalizedString
    price: float

if __name__ == "__main__":
    try:
        product1 = Product(name="Laptop", price=1200.50)
        print(f"Product: {product1.name}")

        # This will raise a ValidationError
        # product2 = Product(name="keyboard", price=75.00)
    except ValidationError as e:
        print(f"Validation Error: {e}")

Manage Settings with `BaseSettings`

Uygulama ayarları (veritabanı URL'leri, API anahtarları gibi) genellikle geliştirme ve üretim ortamları arasında değişiklik gösterir.

pydantic-settings kütüphanesinden gelen BaseSettings, bu yapılandırmaları kolayca yönetmek için tasarlanmıştır. Ayarları şu kaynaklardan otomatik olarak yükler:

  • Ortam değişkenleri
  • .env dosyaları
  • Varsayılan değerler

Default Settings in Action

Ayarlarınızı BaseSettings sınıfından türetilen bir sınıfın öznitelikleri olarak tanımlayın. Pydantic geri kalanını halleder ve başka bir şey belirtilmediği takdirde varsayılan değerleri sağlar.

from pydantic_settings import BaseSettings

class AppConfig(BaseSettings):
    app_name: str = "My FastAPI App"
    debug_mode: bool = False
    version: str = "1.0.0"

if __name__ == "__main__":
    settings = AppConfig()
    print(f"App Name: {settings.app_name}")
    print(f"Debug Mode: {settings.debug_mode}")
    print(f"Version: {settings.version}")

Loading from Environment Variables

BaseSettings, ayar adlarınızla eşleşen (büyük/küçük harf duyarsız) ortam değişkenlerini otomatik olarak arar.

Bu örnekte, Pydantic'in varsayılanı geçersiz kılarak bunu nasıl algıladığını göstermek için geçici olarak bir ortam değişkeni ayarlıyoruz.

import os
from pydantic_settings import BaseSettings

class AppConfig(BaseSettings):
    app_name: str = "Default App"
    database_url: str = "sqlite:///./test.db"

if __name__ == "__main__":
    print("--- Without env var ---")
    settings_default = AppConfig()
    print(f"App Name: {settings_default.app_name}")

    # Simulate setting an environment variable
    os.environ["APP_NAME"] = "Production App"
    os.environ["DATABASE_URL"] = "postgresql://user:pass@host:5432/db"

    print("\n--- With env var ---")
    settings_env = AppConfig()
    print(f"App Name: {settings_env.app_name}")
    print(f"DB URL: {settings_env.database_url}")

    # Clean up the environment variable for subsequent runs
    del os.environ["APP_NAME"]
    del os.environ["DATABASE_URL"]

Leveraging `.env` Files

Yerel geliştirme için ayarları proje kök dizininizdeki bir .env dosyasında (örneğin: .env) saklamak yaygın bir uygulamadır.

BaseSettings sınıfınızda SettingsConfigDict(env_file='.env') kullanarak ayarların bu dosyadan yüklenmesini yapılandırabilirsiniz.

Örnek .env içeriği:
APP_NAME="Dev App"
API_KEY="your_dev_api_key"

from pydantic_settings import BaseSettings, SettingsConfigDict

class ProjectSettings(BaseSettings):
    model_config = SettingsConfigDict(env_file='.env', extra='ignore')

    app_name: str = "Default Project"
    api_key: str = "default_key"

# To make this runnable, you would need python-dotenv installed
# and an actual .env file in the same directory as the script.
# For this lesson, we show the setup.

# Example usage (if .env existed and python-dotenv was active):
# if __name__ == "__main__":
#     settings = ProjectSettings()
#     print(f"App Name: {settings.app_name}")
#     print(f"API Key: {settings.api_key}")

Understanding Settings Priority

BaseSettings bir değer ararken belirli bir öncelik sırasını takip eder:

  1. Ortam değişkenleri (en yüksek öncelik)
  2. .env dosyası değişkenleri
  3. BaseSettings sınıfında tanımlanan varsayılan değerler (en düşük öncelik)

Bu, ortam değişkenlerinin yerel .env dosyalarını ve sınıf varsayılanlarını her zaman geçersiz kılabilmesini sağlar; bu da dağıtım için kritik öneme sahiptir.

Test Your Knowledge!

Pydantic'in BaseSettings yapısı ve özel türler hakkında aşağıdakilerden hangileri doğrudur?

Recap: Custom Types & Settings

Harika bir iş çıkardınız! Pydantic'in doğrulama özelliklerini genişleterek Annotated ve BeforeValidator ile nasıl güçlü özel veri türleri oluşturacağınızı öğrendiniz.

Ayrıca, BaseSettings ile sağlam uygulama yapılandırmasında ustalaştınız ve değerleri varsayılanlardan, .env dosyalarından ve ortam değişkenlerinden net öncelik kurallarıyla nasıl yükleyeceğinizi anladınız.

Bu araçlar, esnek ve sürdürülebilir FastAPI uygulamaları oluşturmak için çok önemlidir!

Sıkça Sorulan Sorular

“Özel Veri Türleri ve Ayarlar” dersi ücretsiz mi?

Evet — “Özel Veri Türleri ve Ayarlar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve FastAPI Backend Development Bootcamp kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. FastAPI Backend Development Bootcamp kursu toplamda 4 dersten oluşur.

“Özel Veri Türleri ve Ayarlar” dersinde ne öğreneceğim?

Özel Pydantic veri türleri tanımlayın ve Pydantic'in `BaseSettings` özelliğini kullanarak uygulama ayarlarını yönetin. FastAPI Backend Development Bootcamp ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

FastAPI Backend Development Bootcamp öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te FastAPI Backend Development Bootcamp, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Özel Veri Türleri ve Ayarlar” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu FastAPI Backend Development Bootcamp dersinde kod yazıp çalıştırabilir miyim?

Evet. Her FastAPI Backend Development Bootcamp dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Pydantic Alan Doğrulaması ve Doğrulayıcılar
  2. Özel Veri Türleri ve Ayarlar
  3. İç İçe Modeller ve Özyinelemeli Yapılar
  4. model_dump ve Takma Adlarla Serileştirme
← FastAPI Backend Development Bootcamp Sayfasına Dön