環境 基本 実践 モデル アップロード デプロイ

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 あたりの設定をミスっていると考えよう。