free-coder
@free-coder

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

djangoを本番環境でDEBUG=Falseにすると存在しないページのエラーが500で返される

解決したいこと

本番環境にデプロイしたdjangoのアプリで、
存在しないページにアクセスしたら404のページを表示したい

例)
djangoを本番環境にデプロイし、DEBUG=Falseに設定したところ
存在しないページにアクセスしようとすると404ではなく500のページが返ります。

発生している問題・エラー

500のページが返ります。

settingで関係ありそうなところを抜粋します


TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "DIRS": [
            os.path.join(PROJECT_DIR, "templates"),
        ],
        "APP_DIRS": True,
        "OPTIONS": {
            "context_processors": [
                "django.template.context_processors.debug",
                "django.template.context_processors.request",
                "django.contrib.auth.context_processors.auth",
                "django.contrib.messages.context_processors.messages",
            ],
        },
    },
]

DEBUG = False

また、templatesに自分でカスタムした404.htmlと500.htmlをおいてます。

自分で試したこと

DEBUG = Trueとした状態で、存在しないページにアクセスした場合はdjangoのデバックエラーで
Page is not found(404)が返ります。

0

1Answer

500:internal sever errorですね。
サーバ側で何かエラーが発生しているようです。
サーバのアクセスログ、エラーログにそれらしき出力はありませんでしたか?

0Like

Comments

  1. @free-coder

    Questioner

    回答ありがとうございます。
    実は、その後自己解決しました。
    原因は404.htmlをextendで共通デザイン化してたのですが、それに問題があったようで500に飛んでいたようです。
    extendせず、404.htmlを単純なhtmlに変更したら治りました。

  2. 返信ありがとうございます。
    解決してよかったです:smiley:

Your answer might help someone💌