Djangoの初心者はこちら。私は次の意味を理解するのに苦労しています:
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
そして
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static')
STATICFILES_DIRS = (
os.path.join(os.path.dirname(BASE_DIR), "static", "static"),
)
ここで何が起こっていますか?
私はそれを "file"は私たちがいるsettings.pyファイル(?)なので、BASE_Dirはそこから2つ上のフォルダーです...?つまり、manage.pyを含むものですか?
STATIC_ROOTは1つになりますか?または2つ? BASE_DIRからのディレクトリ。 STATIC_ROOT FOLDERは作成されますか?または、「静的」と呼ばれるものを作成する必要がありますか?
└── MY_PROJECT
├── BASE_DIR
│ ├── MY_APP
│ │ └── settings.py
│ └── manage.py
└── static
この例では上記は正しいですか?一体何なのか、STATIC_FILES_DIRSは一体どこにあるのか?
BASE_DIRの場所を知りたい場合は、ターミナルに印刷して、この行をsettings.pyに追加するだけです:
print "base dir path", BASE_DIR
runserverで結果を確認します。
BASE_DIRは、Djangoプロジェクトディレクトリです。manage.pyが配置されているディレクトリと同じディレクトリです。
Settings.pyがこのように構成されている場合、ファイルシステムは次のようになります。
└── MY_PROJECT
├── BASE_DIR
│ ├── MY_APP
│ │ └── settings.py
│ └── manage.py
└── static -> STATIC_ROOT
└── static -> STATICFILES_DIRS
ただし、収集された静的と、Djangoが静的ファイルを検索しようとするディレクトリ)を混在させるため、適切な構成ではありません(これを収集するなど)。
└── MY_PROJECT
└── BASE_DIR
├── my_app
│ ├── settings.py
│ └── static -> STATICFILES_DIRS
├── manage.py
└── deployment
├── collected_static -> STATIC_ROOT
└── media -> MEDIA_ROOT
# settings.py
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
STATICFILES_DIRS = (os.path.join(
BASE_DIR, "my_app", "static"),)
STATIC_ROOT = os.path.join(
os.path.dirname(BASE_DIR), "deployment", "collected_static")
MEDIA_ROOT = os.path.join(
os.path.dirname(BASE_DIR), "deployment", "media")
これで、お気に入りのWebサーバー(Apache、Nginxなど)を使用して静的ファイルとメディアファイルを簡単に展開し、「展開」ディレクトリを指定できます。
更新:
MEDIA_ROOTの推奨構成も追加し、収集された静的パスを変更しました。