Models.py benim bir Django ayarları değişkenine nasıl başvurabilirim?


124

Bu çok başlangıç ​​sorusu. Ama şaşkınım. Model.py'imde bir Django ayarları değişkenine nasıl başvurabilirim?

NameError: name 'PRIVATE_DIR' is not defined

Ayrıca dahil olmak üzere birçok başka şeyi denedim settings.PRIVATE_DIR

settings.py:

PRIVATE_DIR = '/home/me/django_projects/myproject/storage_dir'

models.py:

# Problem is here.
from django.core.files.storage import FileSystemStorage

fs = FileSystemStorage(location=PRIVATE_DIR)

class Customer(models.Model): 
    lastName = models.CharField(max_length=20) 
    firstName = models.CharField(max_length=20) 
    image = models.ImageField(storage=fs, upload_to='photos', blank=True, null=True)

Bunu yapmanın doğru yolu nedir?


7
from django.conf import settings- docs.djangoproject.com/en/dev/topics/settings/…
wkl

Yanıtlar:


275

Şunu deneyin: from django.conf import settingssonra settings.VARIABLEo değişkene erişmek için.


16
Alakalı bir şey: settings_something.pyÇeşitli ortamlarda konuşlandırılmış bir proje nedeniyle birden fazla örneğiniz varsa, içeri aktarmaya çalışmayın app.settings. Diğer dosyalardaki üzerine yazılan değişkenler etkili olmayacaktır. Her zaman bu cevapta belirtilen içe aktarımı kullanın. Projemde neler olduğunu anlamam birkaç saatimi aldı.
Ev.

1
Bu, uygun şekilde yapılandırılmışsa çalışır: DJANGO_SETTINGS_MODULE ortam değişkeni ile veya manage.py komut satırı parametresi --settings = .. ile daha fazla bilgi edinin: docs.djangoproject.com/en/2.0/topics/settings
mirek

VAR ikinci sırada sermaye olmalı, aksi takdirde işe yaramaz
Saurabh Chandra Patel

91
from django.conf import settings

PRIVATE_DIR = getattr(settings, "PRIVATE_DIR", None)

Yazan yere Noneayarlarda tanımlanmamış değişken örtmek varsayılan bir değer koyacağız.

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.