Bir Django projesinde "django.conf içe aktarma ayarlarından" ile "içe aktarma ayarları" arasındaki fark nedir


92

Çoğu insanın yaptığını okuyorum from django.conf import settingsama sadece import settingsbir django proje dosyasında yapmanın farkını anlamıyorum . Farkı açıklayan var mı?


django.conf ayarları django varsayılan veya "global" ayarlardır ve kendi proje tabanlı ayarlarınızla geçersiz kılabilirsiniz.
Jingo

7
ASLA ikinci formu kullanmayın. İlki tek doğru olanıdır.
bruno desthuilliers

2
Ama neden ikincisini asla kullanmayalım?
tzenderman

Yanıtlar:


111

import settingsgenellikle settings.pyiçinde bulunan ilk python modülünü içe sys.pathaktarır (varsayılan django kurulumlarında). Yalnızca site tanımlı ayarlar dosyanıza erişim sağlar ve django varsayılan ayarlarının ( django.conf.global_settings) üzerine yazar .

Bu nedenle, ayarlar dosyanızda belirtilmemiş geçerli bir django ayarına erişmeye çalışırsanız bir hata alırsınız.

django.conf.settingsbir dosya değil, kavramların, varsayılan ayarların ve siteye özel ayarlarınızın bir özetini yapan bir sınıftır. Django, kullandığınızda başka kontroller de yapar from django.conf import settings.

Bunu django belgelerinde de bulabilirsiniz .

Bu yardımcı olur umarım.


5
import settingsiçinde settings.pybulunan adlı ilk python modülünü içe aktaracaktır sys.path. Bu, "DJANGO_SETTINGS_MODULE" ortam değişkeninde aranan "site tanımlı ayarlar dosyası" olmayabilir ve herhangi bir python paketi veya modülü olabilir.
bruno desthuilliers

@brunodesthuilliers teşekkürler. Düzeltmenizden haberdar olarak cevabımı güncelliyorum.
juliocesar

22

from django.conf import settings daha iyi bir seçenektir.

Aynı django projesi için farklı ayar dosyaları kullanıyorum (biri "canlı", biri "dev" için), ilki yürütülecek olanı seçecek.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.