4

私の見解の1つに、次のコードがあります。

raise Http404

DEBUG=FalseDjangoが正しい!500.htmlの代わりにテンプレートをレンダリングするとき 404.html理由がわかりません!

編集:DEBUG=True標準のものを入手したとき(Djangoによる)

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.

さらに、runserverコンソールにコードがはっきりと表示され404ます。代わりDEBUG=Falseに、コンソールで設定すると500!!が表示されます。これはとても奇妙です。

編集 2: 発生する直前に print ステートメントを配置するとHttp404、メッセージDEBUG=Trueが表示されるのはFalse!

DEBUG=FalseEDIT 3:ステートメントraise Http404に到達しない場合は確認できます。どうすればそれが可能になりますか??

アップデート

実際にはDEBUG=False、すべての URL で 500 を取得しますが、DEBUG=Trueこれは発生しません。それはどうしてでしょうか?? 同じように実行する必要があります。Django のバグだと思い始めています。

4

1 に答える 1

4

debug=false のエラーは、allowed_hosts 設定が原因である可能性があります。

参照: DEBUG = False を設定すると 500 エラーが発生する

django 1.5 の新機能です。

本番環境では ALLOWED_HOSTS が必要

新しい ALLOWED_HOSTS 設定は、リクエストの Host ヘッダーを検証し、ホスト ポイズニング攻撃から保護します。この設定は、DEBUG が False の場合に必須になりました。そうでない場合、django.http.HttpRequest.get_host() は SuspiciousOperation を発生させます。詳細については、新しい設定の完全なドキュメントを参照してください。

https://docs.djangoproject.com/en/1.5/releases/1.5/#allowed-hosts-required-in-production

于 2013-06-30T09:32:25.857 に答える