web-dev-qa-db-ja.com

django)のurls.pyに見つからない場合は、すべてのURLを404.htmlにリダイレクトします

Djangoによってエラーが表示されるのではなく、urls.pyに存在しない場合、作成されたページ「404.html」ページに任意の種類のURLパターンをリダイレクトするにはどうすればよいですか。

9

作成した404.htmlをレンダリングするビューを作成し、urls.pyでhandler404として設定します。

handler404 = 'app.views.404_view'

デバッグが有効になっている場合、Djangoはデバッグビューをレンダリングします。それ以外の場合は、存在しない場合は、すべてのタイプのページに対してhandler404で指定されているように404ページをレンダリングします。

エラービューのカスタマイズ に関するDjangoのドキュメント。

完全な例については、 this 回答を確認してください。

8
moonstruck

Views.pyに、次のコードを追加するだけです(urls.pyの内容を変更する必要はありません)。

from Django.shortcuts import render_to_response
from Django.template import RequestContext


def handler404(request):
    response = render_to_response('404.html', {},
                              context_instance=RequestContext(request))
    response.status_code = 404
    return response

テンプレートディレクトリにカスタム404.htmlを配置します。

出典:ここをクリック

2
kartikmaji

プロジェクトsettings.pyに移動し、DEBUG = TrueDEBUG = Falseに設定します。次に、Djangoは、設定されていないすべてのパターンをnotfoundにリダイレクトします。

さらに、404テンプレートをカスタマイズする場合は、プロジェクトでurls.py

セットする

handler404 = 'app.views.404_view'

次に、プロジェクトでview.py

from Django.shortcuts import render_to_response
from Django.template import RequestContext

def handler404(request):
    response = render_to_response('404.html', {},
                                  context_instance=RequestContext(request))
    response.status_code = 404
    return response

最後に、templates404.htmlを追加し、エンドユーザーに表示する内容を入力します。

1
Yusef Mohamadi

viewまたはurlの内容を変更する必要はありません。 settings.pyで、次の2つの手順を実行してください。

DEBUG = False
ALLOWED_HOSTS = ["*"]

また、アプリディレクトリ(この例ではmyapp)にmyapp/templates/404.htmlを作成します。ここで、404.htmlはカスタムエラーページです。それだ。

0
Shub