Djangoで作られたwebページで、サーバー側に欠陥があるページにアクセスすると「Internet Server Error(500)」といったDjangoデフォルトのページが表示されるようになっています。
本日はこの500のデフォルトページを、自作のカスタマイズページで表示する方法を紹介をしていきます。
コンテンツ
500エラーとは
500エラーとは、英語では「Internet Server Error」と表示され、webサーバーで起きるエラーの一種です。
サーバー内部で何らかのエラーが発生し、要求通りに処理を完了できなかった時に発生します。
いずれにしもて、あなたがプログラマーならば早急に対応処置をすることが求められる事案です。
500ページ作成手順
それでは500ページを自作でカスタマイズするにあたって必要な設定を説明していきます。
先ずは、templatesディレクトリを作成します。
1 2 |
├── manage.py └── templates |
templatesディレクトリは、djangoプロジェクトのmanage.pyと同じディレクトリに作成をします。
templatesディレクトリ直下に500.htmlファイルを作成する
templatesディレクトリが作成できたら、その直下に500.htmlファイルを作成します。
作成できれば以下のようになるかと思います。
1 2 3 |
├── manage.py └── templates └─── 500.html |
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ディレクトリから500.htmlまでの導線を設定する必要があります。
それは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', ], }, }, ] - - - |
以上の設定が済んだら、早速閲覧権限のないページにアクセスしてみます。
以上。
その他
500.htmlと同じ要領で404.htmlや403.htmlも作成することができます。
是非試してみてください。
最後に
いかがでしたでしょうか。
以上が、「【Django】500ページを自作でカスタマイズする」の紹介記事になります。
プログラミング学習を効率良く進めるには…
私ヒロヤンがプログラミングを始めた頃は以下のような感じでした。
そしてネットで調べていくうちに膨大な時間が過ぎていきました。
私ヒロヤンの実体験より、プログラミングを効率的に学ぶために大切なことは以下のことだと考えています。
1. いつまでもダラダラとやらないで、目標を決定して短期集中する
2. マンツーマンで、わからない箇所は直ぐに質問をして即レスをもらう
.proでは私ヒロヤンが学習してきたプログラミング経験0からのpython/django、その他webサイト・サービス開発のコースが用意されています。
カウンセリング自体は無料なので話を聞いてみるだけでもいかがでしょうか?
また以下のリンク先ではdjangoを教えてくれるスクールをまとめ紹介しています。
コメントを残す