DjangoのenvironでDEBUG=Falseにしているのに反映されない問題の対処法
今回はDjangoのenvironでDEBUG=FalseにしているのにDEBUGがTrueになってしまう問題の対処法についてご紹介いたします。
DjangoのenvironでDEBUG=Falseにしているのに反映されない問題の対処法
django-environを使ってsettings.pyをoverrideしたときにDEBUG=FalseでoverrideしているのにDEBUG=Trueになったままになってしまう事象にハマりました。
DEBUG=Falseにしているのに、adminで例の「Page not found (404) You’re seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.」の画面が出てしまいます。
そのときのソースコードは下記のような感じです。
1 2 3 4 5 6 7 8 |
import environ from .base import * env = environ.Env() env.read_env(os.path.join(BASE_DIR, '.env')) DEBUG = env('DEBUG') |
結論としては、
DEBUG = env('DEBUG’)
ではなく
DEBUG = env.get_value('DEBUG’,bool)
とすべきでした。
DEBUG = env('DEBUG’)
にしてしまうと、str型のFalseが代入されてしまうのですね。
type()関数を使ってようやく分かりました。
str型の変数が代入されていたので、自動的にTrueになってしまっていたのです。
というわけで、型を指定できるenv.get_valueを使いましょう。
以下が修正したコードになります。
1 2 3 4 5 6 7 8 |
import environ from .base import * env = environ.Env() env.read_env(os.path.join(BASE_DIR, '.env')) DEBUG = env.get_value('DEBUG',bool) |
終わりに
今回はDjangoのenvironでDEBUG=FalseにしているのにDEBUGがTrueになってしまう問題の対処法についてご紹介いたしました。
ディスカッション
コメント一覧
まだ、コメントがありません