Djangoの静的ファイルの扱いがいまいち理解出来てなっかたので
調べて自分なりにまとめました。
staticディレクトリの配置する場所が参考にするサイトによって
設計が違ったりするとわからなくなってしまう...
STATIC_ROOT
、STATIC_URL
、STATICFILES_DIRS
この3つの意味をちゃんと理解できればそんなに難しい話ではなかった...
##STATIC_ROOTについて
STATIC_ROOT = os.path.join(BASE_DIR,'static')
ローカルのサーバを動かしている段階では、Djangoが勝手に
各アプリディレクトリ直下のstaticディレクトリを自動で探してくれるため、
意識する必要はないみたいです。
しかし本番環境のWebサーバに静的ファイルを管理させる場合に設定が必要になります。
というのも本番環境のWebサーバにそれらの静的ファイルを管理させる場合、
それらのファイルを一箇所に集めることが必要になり、
どこに集めるのかを決めるのがこのSTATIC_ROOTの役割だそうです。
なので$ python manage.py collectstatic
コマンドを打った際に、
各アプリの静的ファイルを集約する先を設定値として指定します。
こちらはデフォルトで記述がないため、自分で追記する必要があります。
##STATIC_URLについて
STATIC_URL = '/static/'
静的ファイルをどんなURLで公開するのかを決める設定値。
例:/static/
とした場合、各静的ファイルはドメイン/static/????
のような形で
アクセスできるようになります。
特にこだわりがなければ、デフォルトで記載されている/static/として問題ないみたいです。
##STATICFILES_DIRSについて
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)
ローカルのサーバを動かしている段階では、Djangoが勝手に
各アプリディレクトリ直下のstaticディレクトリを自動で探してくれますが、
もしそれ以外に静的ファイルディレクトリとして
認識してほしいディレクトリがあればSTATICFILES_DIRSで設定可能。
基本的には必要ないはず。