Django - 自訂 Error 404 頁面

May 6, 2017 Djnago English

上一篇中講解了 Logging 的基本概念與用法後,讓我們繼續發掘 Django 其他的功能,本篇將介紹如何在 Django 中自訂 Error 404 處理方式與頁面。



前置準備

若你還未將環境設定好,你可以使用以下指令快速建立專案:

# 安裝 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 中加入以下程式碼:

# View for error 404
class Error404View(View):
    def get(self, request):
        # Do something if you want
        return render(request, 'path/to/error404.html')

# View for error 500
class Error500View(View):
    def get(self, request):
        # Do something if you want
        return render(request, 'path/to/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 = [
    ...
]

handler404 = Error404View.as_view()
handler500 = Error500View.as_view()

如果你的 Django 專案底下有多個 App,你需要把這段內容加入你專案主要的 urls.py 裡面。

測試

若你目前已開啟 Debug 模式,剛剛設定的頁面是沒有辦法正常呈現的。你必須要到 settings.py 中把 Debug 模式關閉才能看到結果:

DEBUG = False




你也可能會喜歡:




若對於文章內容有任何建議與指正,非常歡迎你告訴我或者與我一起討論 ! :)

zeckli.devforgalaxy@gmail.com   © 2015-2019 zeckli, thanks to Jekyll and GitHub.