🤖

DjangoのDEBUGにはboolを渡そう

2023/04/27に公開

はじめに

AWS環境にデプロイする際に、SSMParameterから取得した値を設定していたら沼ったので記事にしました。
誰かの助けになれば幸いです🙏

DEBUGモードとは?

settings.py にある
こいつのことである

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG=True

DEBUG=True の場合

エラー時に詳細な情報が表示される
METAデータがすべて表示される(一応パスワード系の項目は伏せ字になるがそれ以外は全部見れる)

DEBUG=False の場合

汎用的なエラーにまとめられ詳細は表示されない

# SECURITY WARNING: don't run with debug turned on in production!
と書いてあるように、本番環境で丸見えはまずいのでFalseにする必要がある

本題

AWS環境(AppRunner)にデプロイするぞ!
というタイミングで下記のように設定を行った

ところがDEBUG=Trueのままになっていて原因の特定に時間がかかった

解決案

SSMParameterから取得したDEBUGはstrなのでboolに変換してあげる

DEBUG = bool(strtobool(env('DEBUG'))) if type(
    env('DEBUG')) is str else env('DEBUG')

文字列FalseはTrueと判定される

DEBUG = "False"
if DEBUG:
    print('debug mode on')
else:
    print('debug mode off')

# debug mode on がprintされる

まとめ

沼るときって意外としょーもない理由だったりするなぁと痛感しました

Discussion