Djangoで作られたwebページで、アクセス権限がない「アクセス禁止(403)」、存在しないページにアクセスする「Page not found(404)」、サーバー側に欠陥があるページにアクセスすると「Internet Server Error(500)」といったDjangoのエラーページを独自に作成する方法をまとめました。
コンテンツ
各種エラーページ
403エラーとは
403エラーとは、英語では「403 Forbidden」と表示され、閲覧権限がないページにアクセスした場合に、アクセス拒否されて表示されるケースが想定されます。
例えば会員制のwebサイトで、ユーザー登録をしたユーザーしか閲覧できないページを未登録のユーザーがアクセスしようとすると403エラーが出現したりすることがあります。
404エラーとは
404エラーとは、英語では「Page not found(404)」と表示され、そもそも存在しないページにアクセスした場合に、表示されるケースが想定されます。
試しにGoogleの404ページにアクセスしてみます。
こちらから確認できます。
500エラーとは
500エラーとは、英語では「Internet Server Error」と表示され、webサーバーで起きるエラーの一種です。
サーバー内部で何らかのエラーが発生し、要求通りに処理を完了できなかった時に発生します。
いずれにしもて、あなたがプログラマーならば早急に対応処置をすることが求められる事案です。
各種自作ページ作成手順
それでは独自のエラーページを自作でカスタマイズするにあたって必要な設定を説明していきます。
先ずは、templatesディレクトリを作成します。
1 2 |
├── manage.py └── templates |
templatesディレクトリは、djangoプロジェクトのmanage.pyと同じディレクトリに作成をします。
templatesディレクトリ直下に各種ファイルを作成する
templatesディレクトリが作成できたら、その直下に各種、403.html、404.html、500.htmlファイルを作成します。
作成できれば以下のようになるかと思います。
1 2 3 4 5 |
├── manage.py └── templates ├─── 403.html ├─── 404.html └─── 500.html |
403.htmlページにはこんな感じでコードを書いておきましょう。
403.html
1 2 3 4 5 |
<div class="error_content"> <h1>Forbidden(403)</h1> <p>You are not allowed to access this address.</p> <p><a href="/">トップページに戻る</a></p> </div> |
404.htmlページにはこんな感じでコードを書いておきましょう。
404.html
1 2 3 4 5 |
<div class="error_content"> <h1>Page not found(404)</h1> <p>The requested URL /page_not_found was not found on this server. </p> <p><a href="/">トップページに戻る</a></p> </div> |
500.htmlページにはこんな感じでコードを書いておきましょう。
500.html
1 2 3 4 5 |
<div class="error_content"> <h1>Server Error(500)</h1> <p>Sorry something went wrong.</p> <p><a href="/">トップページに戻る</a></p> </div> |
DebugをFalseにする
初期状態ではsettings.pyのDEBUGはTrueのままなのですが、発動するためにはFalseに設定する必要があります。
(※開発用だと、エラーが排出された時にエラーに係る関連項目がまとめて排出されるので、開発時はTrueで本番時はFalseと使い分けることが必要です。)
settings.py
1 |
DEBUG = False |
settings.pyファイルを編集する
templatesディレクトリから各種エラーページまでの導線を設定する必要があります。
それはdjangoのsettings.pyから編集できます。
settings.py中のTEMPLATESの’DIRS’の箇所を書き換えます。
初期状態は以下のようになっています。
1 |
'DIRS': [], |
以下に書き換えます。
1 |
'DIRS': [os.path.join(BASE_DIR, 'templates')], |
全体像としては以下のようになります。
settings.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
- - - TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] - - - |
以上の設定が済んだら、早速閲覧権限のないページにアクセスしてみます。
403
404
500
以上。
最後に
いかがでしたでしょうか。以上が、「【Django】403、404、500の自作のエラーページをカスタマイズする」の紹介記事になります。
プログラミング学習を効率良く進めるには…
私ヒロヤンがプログラミングを始めた頃は以下のような感じでした。
そしてネットで調べていくうちに膨大な時間が過ぎていきました。
私ヒロヤンの実体験より、プログラミングを効率的に学ぶために大切なことは以下のことだと考えています。
1. いつまでもダラダラとやらないで、目標を決定して短期集中する
2. マンツーマンで、わからない箇所は直ぐに質問をして即レスをもらう
.proでは私ヒロヤンが学習してきたプログラミング経験0からのpython/django、その他webサイト・サービス開発のコースが用意されています。
カウンセリング自体は無料なので話を聞いてみるだけでもいかがでしょうか?
また以下のリンク先ではdjangoを教えてくれるスクールをまとめ紹介しています。
コメントを残す