Django の DEBUG=False でデプロイが失敗するときは、css ファイルにある url(../images/loading.gif) みたいなのにあった
2023.02.18
css ファイルに画像を読み込むようなコードがある場合、それは Django のデプロイを阻止するリスクになる。私はこれだけで 3 時間を使ってしまった。
デプロイ自体はうまくいってプログラムも動くが、DEBUG=False に切り替えると 500 エラーになることがある。この問題はとても厄介で、海外のサイトを見ても膨大な数の QA がある。しかし半分以上はまったくあてにならない。
エラーの原因は主に
- ALLOWED_HOSTS にドメインを設定していない
- MIDDLEWARE に whitenoise を設定していない
- STATIC_URL と STATIC_ROOT をうまく設定していない
- python manage.py collectstatic をやっていない
というもの。エラーが出たら、画像や css ファイルだけでも表示させよう。表示できたら、タイトルにあるような厄介な問題がある危険がある。表示できなかったら、STATIC_ROOT あたりの設定をミスっていると考えよう。