Photo by Austin Distel on Unsplash 在一般的 Django 專案開發,可以看到 Django 應用程式 (APP) 下的 views.py 檔案中,依照功能的需求撰寫了許多的檢視函式 (View Function) ,這種寫法就稱為函式導向的檢視 (Function-based Views) ,雖然較為直覺,但是隨著 Django 專案的規模越來越大,這樣的寫法就像是在 Python 專案中寫了許多的函式 (Function) 一樣,對於未來的維護及擴充性,較不理想。 所以,這時候就會使用 Python 物件導向 (OOP) 的概念,將許多的函式 (Function) 模組化為類別 (Class) 及方法 (Method) ,來提高程式碼的重用性及維護性。 Django 也是相同的道理,它提供了許多內建的檢視類別,讓開發人員能夠藉由覆寫 (Overriding) 的方式 ,將函式導向的檢視 (Function-based Views) ,封裝成類別導向的檢視 ( Class-based Views ) ,不但具有物件導向 (OOP) 的優點外, Django 在背後也幫我們做了許多的事情,讓程式碼的寫法能夠更加簡潔。 因此,本文將利用 5 個常用的Django檢視類別 ,來實作待辦清單 (To Do List) 網站,藉此 與函式導向的檢視 (Function-based Views) 寫法作 比較 ,重點包含: 前置作業 Django ListView ( 清單檢視類別 ) Django CreateView ( 新增檢視類別 ) Django UpdateView ( 修改檢視類別 ) Django DeleteView ( 刪除檢視類別 ) Django DetailView ( 內容檢視類別 ) 一、前置作業 在進行今天的實作前,先來說明一下本文所使用的待辦清單 (To Do List ) 資料模型,如下範例: from django.db import models from django.utils import timezone class Todo(models.Model): title = models.CharField(max_length=100)