Django settings.py Dosyasinin Onemi ve Projedeki Rolu
Django projelerinde settings.py dosyasi, tum proje ayarlarinin merkezi olarak yonetildigi kritik bir yapi tasidir. Bu dosya sayesinde veritabanı baglantilari, guvenlik ayarlari, uluslararasilasma (i18n), statik dosyalar ve diger temel konfigurasyonlar yonetilir. Dogru sekilde ayarlanmis bir settings.py dosyasi, projenizin guvenli, performansli ve esnek bir sekilde calismasini saglar.
Django’nun esnek yapisi sayesinde settings.py dosyasindaki ayarlar degistirilebilir, ortama gore ozellestirilebilir ve ihtiyac duydugunuz sekilde gelistirilebilir. Ancak, baslangic asamasinda dogru ayarlarin yapilmamasi, ilerleyen donemde buyuk degisiklikler gerektirebilir. Bu nedenle, settings.py dosyasinin temel ayarlarini anlamak, uzun vadede projenizi daha saglam ve surdurulebilir hale getirecektir.
Bu makalede, Django settings.py dosyasinin en onemli ayarlarini tek tek ele alacagiz.
Django settings.py Dosyasinin Temel Ayarlari
1. Proje Dizini ve Temel Ayarlar
BASE_DIR
BASE_DIR, projenin ana dizin yolunu belirtir. Bu ayar, proje icindeki dosya yollarini olustururken kullanilir.
BASE_DIR = Path(__file__).resolve().parent.parent
SECRET_KEY
Bu anahtar, Django’nun sifreleme islemlerinde kullanilir ve gizli tutulmalidir.
SECRET_KEY = 'gizli-anahtar'
DEBUG
DEBUG = True ise ayrintili hata mesajlari goruntulenir. Uretim ortaminda False olarak ayarlanmalidir.
DEBUG = True
ALLOWED_HOSTS
Hangi domain veya IP adreslerinin projeye erisebilecegini belirler.
ALLOWED_HOSTS = ['example.com', '127.0.0.1']
2. Uygulama ve Middleware Konfigurasyonlari
INSTALLED_APPS
Projenizde aktif olan uygulamalari tanimlar.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
MIDDLEWARE
Django’nun HTTP isteklerini islemesini saglayan ara katman yazilimlari (middleware) buradan yonetilir.
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
3. URL ve Sablon Ayarlari
ROOT_URLCONF
Projenin ana URL yonlendirme dosyasini belirler.
ROOT_URLCONF = 'myproject.urls'
TEMPLATES
Django’nun sablon motorunu ve sablon dizinlerini belirler.
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR / 'templates'],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
4. Veritabani Ayarlari
DATABASES
Projenin veritabanini tanimlar. Varsayilan olarak SQLite kullanilir, ancak PostgreSQL, MySQL gibi veritabanlari da eklenebilir.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
5. Kullanici ve Guvenlik Ayarlari
AUTH_PASSWORD_VALIDATORS
Kullanici sifrelerinin guvenliginin saglanmasi icin kullanilan validasyon ayarlari.
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
6. Dil ve Zaman Ayarlari
LANGUAGE_CODE
Projenin varsayilan dilini belirler.
LANGUAGE_CODE = 'tr'
TIME_ZONE
Zaman dilimini belirler.
TIME_ZONE = 'Europe/Istanbul'
7. Statik ve Ortam Dosyalari
STATIC_URL
Statik dosyalarin web uzerinden sunulacagi yolu belirler.
STATIC_URL = '/static/'
Sonuc
Django projelerinde settings.py dosyasi, tum konfigurasyon ayarlarinin merkezi oldugu icin buyuk onem tasir. Dogru bir sekilde ayarlanmis settings.py, projenizin performansini, guvenligini ve gelistirme surecini kolaylastirir. Bu nedenle, projenize baslarken temel ayarlari iyi anlamak ve duzgun bir sekilde sekillendirmek uzun vadede buyuk avantaj saglayacaktir.