2017年5月9日

Django 實作教學 - 自訂 Error 404 頁面 ( Django - Customized error 404 view for your applications )

上一篇講解了 Logging 的基本概念與用法後,本篇將介紹如何在 Django 中自訂 Error 處理方式與頁面。( 其他 Django 相關教學可以參考本篇整理。If you want to read this article in English, you can visit here )



前置作業
在開始設定之前,若你還沒將環境建立起來的話,先安裝 Django 並建立專案:
# 安裝 Django
python -m pip install Django

# 查看 Django 版本
python -m django --version

# 建立 Django 專案
django-admin startproject <project-name>
專案預設結構如下:
project-name/
├── project-name
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   ├── wsgi.py


建立 View
使用 Django 的好處就是它提供了許多預設機制,我們只需要去改寫部分細節、或者是定義自己想要的處理方式即可。以處理 Error 404 來說,Django 其實已經有一個預設的處理機制與頁面,因此我們不需要從零開始。當 Error 404 出現時,Django 會針對這個狀況指定一個 View (也就是我們程式邏輯所在部分),所以我們可以在 view.py 中加入以下程式碼:
# Error 404 
class Error404View(View):
    def get(self, request):
        # Do something if you want
        return render(request, 'path-to-your/error404.html')

# Error 500
class Error500View(View):
    def get(self, request):
        # Do something if you want
        return render(request, 'path-to-your/error500.html')
從上面的程式中,你可以看到我們使用兩個 HTML 檔案,這就是我們到時候要呈現的頁面。而通常我們的 HTML 檔案都會放在 templates 資料夾中,使用的方式跟一般的頁面是一樣的,頁面的內容我就不在這邊討論。


修改 URL 設定檔
前面的步驟還沒有辦法讓 Django 知道我們新的 View 要怎麼用以及何時用,因此我們現在要透過 URL 設定檔將它們連結起來,開啟 urls.py 並將以下內容加入:
from django.conf.urls import handler404, handler500
# 將我們剛剛設定的 View 引入
from your-app.views import Error404View, Error500View

urlpatterns = [
    ...
]

# 讓系統知道對應的 View
handler404 = Error404View.as_view()
handler500 = Error500View.as_view()
如果你的 Django 專案底下有多個 App,你需要把這段內容加入你專案主要的 urls.py 裡面。


測試
請記得若你開啟 Debug 模式,剛剛設定的頁面是沒有辦法正常呈現的。你必須要到 settings.py 中把 Debug 模式關閉才能看到結果。
DEBUG = False



Environment :
  ・ Debian
Reference :
  ・ Django - Writing views

熱門文章