django 1.10を使用して私のカスタム404ページを作成するための簡単なdjangoアプリケーションを作成しました。 Django Documentationによると、私のページに404.htmlと500.htmlを作成しました。私は404エラーメッセージを表示する2つの方法を試しました。Django 404 Page not loading
1)私は単純な404.htmlと500.htmlページを作って何もしませんでした。 私は500ページを得ることに成功しました。 正しいURLは次のとおりでした:localhost:8000/book そして私はlocalhost:8000/book/fgfgを提供しました そして入力に応じてエントリがありませんでした。しかし、私は500ページに送られましたが404ページには送られませんでした私の期待通りに。 これは、内部のAppのUrls.pyです:
from django.conf.urls import url
from django.conf.urls import (
handler400, handler403, handler404, handler500
)
from bookform import views
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),]
そして、これは外部プロジェクトのurls.pyです:
from django.conf.urls import url,include,handler404,handler500
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^book/', include('bookform.urls')),
]
# handler404='bookform.views.handler404'
# handler500='bookform.views.handler500'
私は第二の方法でコメント解除ここhandler404のと500をコメントしています。 最初の方法では、404と500のhtmlファイルを追加する以外は何もしませんでした.DjangoはURLを見つけようとしましたが、500のエラーが発生しましたが、404エラーであると予想していました。 Debugをtrueに設定すると、このエラーが表示されました: formdj.urlsで定義されたURLconfを使用して、Djangoは次のURLパターンをこの順序で試しました。 ^ admin/ ^ book/^ $ [name = 'index'] 現在のURL、book/dfsdfsdはこれらのいずれとも一致しませんでした。
DEBUG = FALSEに設定すると、500エラーになります。
2)方法2で: 私はviews.pyファイルを更新し、urls.pyからhandler404とhandler505行のコメントを外しました。
これはviews.py:
from django.shortcuts import render,render_to_response
from django.shortcuts import HttpResponse
from django.forms import modelformset_factory
from forms import BookForm
from bookform.models import Book
from django.template import RequestContext
def index(request):
BookFormSet=modelformset_factory(Book,fields= ('name','authors'),extra=10,can_delete=True)
formset=BookFormSet()
return render(request,'bookform/index.html',{'formset':formset})
def handler404(request):
response = render(request,'bookform/404.html', {'status':400},
)
response.status_code = 404
print('I am getting called')
return response
def handler500(request):
response = render(request,'bookform/500.html', {'status':400},
)
print('I am getting called 500')
response.status_code = 500
return response
再び私は500 Page.Iは500とを削除しようとしましたなっていたデバッグ=その後、虚偽それは私がそれを言っていた、上でデバッグを有効500.Thenになりましたエラーは404エラーでした。 私が何をしたとしても、500.htmlというページがあります。 404.htmlページを正しく読み込む方法が混乱しています。