2011-10-23 29 views
66

這是一個非常初學者的問題。但我很難過。如何在model.py中引用django設置變量?如何在models.py中引用django設置變量?

NameError:名字「PRIVATE_DIR」沒有定義 也嘗試了很多其他的東西,包括settings.PRIVATE_DIR

什麼是做到這一點的正確方法是什麼?

--------- ------------- 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

'從django.conf導入設置' - https://docs.djangoproject.com/en/dev/topics/settings/#using-settings-in-python-code – birryree

回答

143

嘗試這樣的:from django.conf import settings

+16

感謝它的作品,如果我參考'設置.VAR' – codingJoe

+6

相關內容:如果由於在多個環境中部署項目而導致出現多個'settings_something.py'實例,請勿嘗試從'app.settings'導入。其他文件中的覆蓋變量不會生效。始終使用此答案中提到的導入。我花了幾個小時才意識到我的項目正在發生什麼。 –

+0

如果配置正確,它可以工作:使用環境變量DJANGO_SETTINGS_MODULE或使用manage.py命令行參數--settings = ..閱讀文檔中的更多信息:https://docs.djangoproject.com/zh/2.0/topics/settings / – mirek

54
from django.conf import settings 

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

凡說:None,你會放一個默認值櫃面變量沒有定義在設置中。