2011-10-23 5 views
66

Questa è una domanda per principianti. Ma sono perplesso. Come faccio a fare riferimento a una variabile delle impostazioni di Django nel mio model.py?Come faccio a fare riferimento a una variabile di impostazioni di Django nel mio models.py?

NameError: nome 'PRIVATE_DIR' non è definito provato anche un sacco di altre cose tra cui settings.PRIVATE_DIR

Qual è il modo corretto di fare questo?

--------- settings.py -------------

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

--------- model.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) 
+6

'from django.conf import settings' - https://docs.djangoproject.com/en/dev/topics/settings/#using-settings-in-python-code – birryree

risposta

143

prova con questo: from django.conf import settings

+16

Grazie funziona se faccio riferimento a' settings .VAR' – codingJoe

+6

Qualcosa di rilevante: se ci sono diverse istanze di 'settings_something.py' a causa di un progetto distribuito in diversi ambienti, non provare a importare da' app.settings'. Le variabili sovrascritte negli altri file non avranno effetto. Usa sempre l'importazione menzionata in questa risposta. Mi ci sono volute alcune ore per capire cosa stava succedendo nel mio progetto. –

+0

Funziona, se è configurato correttamente: con la variabile di ambiente DJANGO_SETTINGS_MODULE o con il parametro della riga di comando manage.py --settings = .. Leggi di più nei documenti: https://docs.djangoproject.com/it/2.0/topics/settings / – mirek

54
from django.conf import settings 

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

Dove dice None, si metterà un valore di default in caso la variabile non è definita nelle impostazioni.