
特定のドメインでの起動でエラー発生
ローカルでの開発もある程度終わったので、特定のドメインで稼働するようDjangoアプリケーションをデプロイしました。
デプロイ後、そのドメインでアクセスを試みるといくつかエラーが発生したのでまとめておきます。
Disallowed Hostエラー
ブラウザにドメインのURLを入力してアクセスすると、Disallowed Host Errorが発生しました。
エラーメッセージをよくみると、このドメインをALLOWED_HOSTSに追加してくれと書かれています。
よって、settings.pyに以下の記述を行いました。
1 | ALLOWED_HOSTS = ['特定のドメイン', 'localhost', '127.0.0.1'] |
再度デプロイを行うと、無事エラーが解消されていることが確認できました。
CSRF検証エラー
次に、admin管理画面にログインするために、管理画面ログインページにアクセスしました。
IDとパスワードを入力し、ログインボタンを押下すると、CSRF検証エラーと表示され、ドメイン名 does not match any trusted origins.となってしまいます。
原因調査
先程のエラーメッセージで検索すると、それっぽいものがひっかかりました。
この記事にあるように、Django4.0からこのエラーは起こるようになったようです。
対応
対応方法としては、settings.pyにCSRF_TRUSTED_ORIGINSの設定をすれば良さそうです。早速行います。
1 | CSRF_TRUSTED_ORIGINS = ['https://特定のドメイン'] |
再度デプロイしアクセスすると、無事admin管理画面でログインすることができました。
まとめ
Djangoのローカル開発環境以外で動作させるときのエラーについて記載しました。
まだまだ経験が少ないため、プロダクション環境やステージング環境での動作時に予期せぬことが起こるかもしれません。
環境ごとでの設定ファイル(settings.py)の指定も行う必要が出てきます。その辺りも対応していければと思います。