djangoでコードを書いていく中で404エラーページを自分で作りたいことがあるかもしれません。
djangoは404ページを簡単に表示する機能が備え付けられているのですが、だからこそ、仕組みを理解することが難しくなっている面もあります。
そこで今回は、404ページを作る方法について見ていくとともに、その仕組みもしっかりと解説していきます。
404ページを自作する方法
404ページを自作する方法は、DIRで設定したフォルダに404.htmlファイルを作るだけです。
htmlファイルなどのhtmlファイルを保存する場所について理解したい方は、templatesフォルダを作る場所を解説という記事も合わせて読んでみてください。
初期設定コードを使いますので、DIRはBASE_DIRのtemplatesフォルダになります。
つまり、manage.pyファイルが入っているフォルダの中に新規で作ったtemplatesフォルダの中に404ファイルを作っていきます。
ファイル名を404.htmlにする理由
ここで、ファイル名を404.htmlにする理由についてお伝えしていきます。
djangoでは、url.pyファイルでリクエストを受けたurlに対し、どのviewを返すのか指定をします。
そして、djangoではデフォルトで、リクエストを受けたurlがurls.pyの内容と合致しなかった場合、django.views.defaults.page_not_found()というviewを返すように設定されています。
このpage_not_found()viewのデフォルトの設定は以下の通りです。
コードdefaults.page_not_found(request, exception, template_name='404.html')
template_nameのところで404.htmlファイルが指定されていることを確認しましょう。
つまり、djangoはデフォルトで、404エラーが発生したときには404.htmlファイルを呼び出すように設定されているのです。
ですので、DIRで指定したフォルダの中で404.htmlファイルを作ることで、そのファイルが優先的に呼び出されるようになるという仕組みです。
結局のところ、djangoはurls.pyでリクエストを受けたurlに合致するかを確認し、合致した内容に合わせたviewを返しているだけである。
と考えると、今後のdjangoの勉強においても理解がぐっと深まっていくかもしれません。