Djangoによってエラーが表示されるのではなく、urls.pyに存在しない場合、作成されたページ「404.html」ページに任意の種類のURLパターンをリダイレクトするにはどうすればよいですか。
作成した404.htmlをレンダリングするビューを作成し、urls.pyでhandler404として設定します。
handler404 = 'app.views.404_view'
デバッグが有効になっている場合、Djangoはデバッグビューをレンダリングします。それ以外の場合は、存在しない場合は、すべてのタイプのページに対してhandler404で指定されているように404ページをレンダリングします。
エラービューのカスタマイズ に関するDjangoのドキュメント。
完全な例については、 this 回答を確認してください。
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を配置します。
プロジェクトsettings.py
に移動し、DEBUG = True
をDEBUG = 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
最後に、templates
に404.html
を追加し、エンドユーザーに表示する内容を入力します。
view
またはurl
の内容を変更する必要はありません。 settings.py
で、次の2つの手順を実行してください。
DEBUG = False
ALLOWED_HOSTS = ["*"]
また、アプリディレクトリ(この例ではmyapp)にmyapp/templates/404.html
を作成します。ここで、404.html
はカスタムエラーページです。それだ。