Bagaimana saya mereferensikan variabel pengaturan Django dalam models.py saya?


124

Ini adalah pertanyaan yang sangat pemula. Tapi saya bingung. Bagaimana saya mereferensikan variabel pengaturan Django dalam model.py saya?

NameError: name 'PRIVATE_DIR' is not defined

Juga mencoba banyak hal lainnya termasuk 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)

Apa cara yang benar untuk melakukan ini?


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

Jawaban:


275

Coba dengan ini: from django.conf import settingslalu settings.VARIABLEuntuk mengakses variabel itu.


16
Sesuatu yang relevan: jika Anda memiliki beberapa contoh settings_something.pykarena suatu proyek yang diterapkan di beberapa lingkungan, jangan mencoba untuk mengimpor dari app.settings. Variabel yang ditimpa di file lain tidak akan berpengaruh. Selalu gunakan impor yang disebutkan dalam jawaban ini. Saya butuh beberapa jam untuk menyadari apa yang terjadi dalam proyek saya.
Ev.

1
Ini berfungsi, jika dikonfigurasi dengan benar: dengan variabel lingkungan DJANGO_SETTINGS_MODULE atau dengan parameter baris perintah manage.py --settings = .. Baca selengkapnya di dokumen: docs.djangoproject.com/en/2.0/topics/settings
mirek

VAR harus menjadi modal yang terakhir jika tidak maka tidak akan berfungsi
Saurabh Chandra Patel

91
from django.conf import settings

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

Di mana dikatakan None, Anda akan menempatkan nilai default jika variabel tidak ditentukan dalam pengaturan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.