[Django] httpのアクセスをhttpsにリダイレクトさせる

Djangoで作ったウェブアプリに対して、
httpできたアクセス全てをhttpsに変える設定の仕方です。

httpsに対応させたらhttpのアクセスは出来ればして欲しく無いですよね。

本来はnginxなどのサーバーアプリケーションで対応させるのが一番良いのでしょうが、
Django単体でもhttpsにリダイレクトさせる方法があるのでご紹介

httpsにリダイレクトさせる

方法はすごく簡単
設定ファイルsettings.pyに以下の一文を書き加えるだけ。

SECURE_SSL_REDIRECT = True

この設定はデフォルトでは無効になっています。

この設定が有効になっているとhttpsでは無いアクセスが来た際、自動的にhttpsにリダイレクトしてくれるようになります。

この設定が有効になっているとローカルでアクセスした時にアクセスを拒否される場合があるので、デバッグモードの有効の可否、あるいは環境変数での設定の切り替えを行う事をオススメします。

デバッグモードで判別する場合の例

if DEBUT:
    SECURE_SSL_REDIRECT = False
else:
    SECURE_SSL_REDIRECT = True

環境変数を利用する場合は、

[Django] django-environで環境変数を管理してみる

を参考にしてみてください。

まとめ

SECURE_SSL_REDIRECTを有効(True)にするとでhttpのアクセスをhttpsにリダイレクトさせることが出来る。