2016-02-02 29 views
7

documentationによれば、これはかなりシンプルである必要があります:handler404を定義するだけです。現在、私は私のトップurls.pyで、やって:djangoでカスタムhandler404を正しく設定する方法は?

urlpatterns = [ 
    ... 
] 

handler404 = 'myapp.views.handle_page_not_found' 

アプリケーションがインストールされています。

def handle_page_not_found(request): 
    return redirect('homepage') 
しかし、これは効果がありません:対応するビューは、(時間のために、私はちょうど404の場合にはホームページにリダイレクトしたいされている)だけである標準(デバッグ) 404ページが表示されます。

ドキュメントは少しあいまいです:handler404定義されるべき

  • ?ドキュメントにはURLconfが記載されていますが、正確にはどこですか?私はいくつかのアプリケーションを持っていて、それぞれ異なるアプリケーションを持っています。urls.py私はそれらのいずれかに入れることができますか?トップURLconfに?どうして?これはどこに文書化されていますか?
  • このハンドラには何がキャッチされますか?それはdjango.http.Http404django.http.HttpResponseNotFounddjango.http.HttpResponsestatus=404)をキャッチしますか?
+1

設定で 'DEBUG'とは何ですか?それが 'True'なら' False'に変更して見られますか? –

+0

@ ShangWang:ありがとう!実際、それを 'False'に設定することで問題は解決されます。これはafaikには書かれていません。 – dangonfast

+0

@delavnog - [エラー報告セクション](https://docs.djangoproject.com/en/1.9/howto/error-reporting/#error-reporting) - 「DEBUGがFalseの場合...」 – Sayse

答えて

5

設定は正しいものの、settings.pyではDEBUG=Falseにする必要があります。それは生産機能の多くであり、開発環境では動作しません(あなたがdevマシンでDEBUG=Falseを持っていない限り)。

+2

私は私を開発モードでは 'False'であり、それでもデフォルトのdjangoエラーページが表示されます。 – Rexford

関連する問題