models.pyでDjango設定変数を参照するにはどうすればよいですか?


124

これは非常に初心者の質問です。しかし、私は困惑しています。model.pyでDjango設定変数を参照するにはどうすればよいですか?

NameError: name 'PRIVATE_DIR' is not defined

また、他の多くのものを試しました 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)

これを行う正しい方法は何ですか?


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

回答:


275

これを試してみてください:from django.conf import settings次に settings.VARIABLE、その変数にアクセスします。


16
関連するもの:settings_something.pyプロジェクトが複数の環境にデプロイされているためにのインスタンスが複数ある場合は、からインポートしないでくださいapp.settings。他のファイルの上書きされた変数は有効になりません。この回答に記載されているインポートを常に使用してください。私のプロジェクトで何が起こっているのかを理解するのに数時間かかりました。
Ev。

1
これは、正しく構成されていれば機能します。環境変数DJANGO_SETTINGS_MODULEまたはmanage.pyコマンドラインパラメーター--settings =。を使用します。ドキュメントの詳細:docs.djangoproject.com/en/2.0/topics/settings
mirek

VARは後者の資本である必要があります。そうでなければ機能しません
Saurabh Chandra Patel

91
from django.conf import settings

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

それが言うところNone、あなたは設定で定義されていない変数包みデフォルト値を入れます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.