概要
Django で簡単なWebアプリケーションを作ったので heroku にデプロイしたところ、cssファイルが反映されなかった。
備忘記事。
対処法
ローカル環境で python manage.py collectstatic
を実行して、静的ファイルを集めるディレクトリを作成したまでは良いものの、それを .gitignore
に追加してしまっていたのが原因だったので、それを ignore せずにgit add .
してあげた後にデプロイしたらいけた。
そもそも
Django プロジェクトにおいて、ローカル環境と本番環境で静的ファイルを参照するディレクトリは違うらしい。
Django のチュートリアルとかでは大体以下のようなセッティングになっていると思う。
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') # -> 本番環境で参照されるディレクトリ
STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")] # -> ローカル環境で参照されるディレクトリ
まず、STATIC_ROOT
は本番環境で静的ファイルを使う際に参照されるディレクトリ。
つまり、heroku run python manage.py collectstatic
でstaticfiles
に静的ファイルが集められて、集められた静的ファイル達が参照されることになる。
また、STATICFILES_DIRS
はローカル環境で参照されるディレクトリで、DEBUG=True
になっている時に機能する。
herokuにデプロイされた後、heroku run bash
でアップロードされたファイル群?を見れるが、その時に参照するべきstaticfilesがなかったことで今回は気づいた。