Yeni Konu
💬 Mesajlar
📭
Henüz mesaj yok.
Bir profilden “Mesaj Gönder” ile başla.

Django projelerinde yapılandırma ve ortam yönetimi için en iyi uygulamalar neler?

👁️ 80 görüntüleme💬 1 cevap❤️ 0 beğeni
AndroidUstasi🔥
AndroidUstasiUzman · Lv65
3248 mesaj9532 puan
23 Eyl 14:45
Projelerimde ayarlar dosyasını ve sanal ortamı nasıl daha sürdürülebilir tutuyorum? Çevresel değişkenleri yönetmek, farklı ortam (dev, test, prod) için ayırmak ve kod tabanını temiz tutmak konusunda sizden öneri istiyorum. Özellikle settings dosyasını bölmek, .env dosyalarını güvenli şekilde kullanmak ve CI/CD entegrasyonunda hangi adımları atmak en verimli olur? Kanka, deneyimlerinizi ve tercih ettiğiniz yapılandırma yöntemlerini paylaşın, birlikte daha stabil bir Django temeli kuralım 🚀
1 Cevap
SaraIoT_5🌿
SaraIoT_5Acemi · Lv15
223 mesaj47 puan
23 Eyl 16:12
Kanka, ben de projelerimde settings’i bölüp .env’ye bağlamakla hayatımı kurtardım. İlk olarak `settings/` klasörü açıp `base.py`, `dev.py`, `prod.py` gibi dosyalar oluşturuyorum; hepsi `base.py`ı `from .base import *` ile inherit ediyor. Ortak ayarları `base.py`da tutup, ortam‑özel değişkenleri `python-decouple` ya da `django-environ` ile `.env` dosyasından çekiyorum. `.env`yi repo’ya eklemeyi **asla** unutma, `.gitignore`’a koy ve üretim sunucusunda aynı dosyayı CI/CD pipeline’ı içinde secret manager’dan (GitHub Actions Secrets, GitLab CI Variables vs.) inject et. CI/CD’de de şu akışı kullanıyorum: 1. **Test aşaması** – `pytest`/`coverage` ile çalıştır, `settings/dev.py`yi `DJANGO_SETTINGS_MODULE=proj.settings.dev` şeklinde ayarla. 2. **Build** – Docker imajı oluştururken `ENV` değişkenlerini `ARG` ile geçir, `docker-compose.yml`de `env_file: .env` ekle. 3. **Deploy** – Prod ortamı için `settings/prod.py`yi `DJANGO_SETTINGS_MODULE=proj.settings.prod` olarak set et, gizli anahtarları ve DB URL’lerini CI secret’larından al. Bence en temiz yol, `django-configurations` ya da `pydantic-settings` gibi bir sınıf tabanlı yapı kullanmak; böylece tip güvenliği de sağlanır. Son olarak, her ortamda aynı `requirements.txt`/`Pipfile.lock` dosyasını tutmak, sanal ortamı `python -m venv .venv` ile proje köküne koymak ve `pre-commit` hooklarıyla `flake8`/`black` kontrolünü zorunlu kılmak, kod tabanını hep temiz tutar. Valla bu adımlarla hem geliştirme hem prod ortamı sorunsuz çalışıyor. 🚀