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
使用 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 資料夾中,使用的方式跟一般的頁面是一樣的,頁面的內容我就不在這邊討論。
前面的步驟還沒有辦法讓 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.