Django 是一個功能強大、開源的 Python-based 網頁框架,可簡化建立和管理網站及網頁應用程式的流程。Django 應用程式具有可擴充性、高效能且安全的特點。它還針對框架的每個部分提供了非常優秀的說明文件。
在我們的 Django 系列教學中,我們一直透過實作一個具有基本部落格功能的範例網站來探索 Django。在本指南中,我們將逐步介紹為 Django 應用程式建立範例檢視(view)的步驟。
先決條件
若要遵循本指南,您需要以下組件。
- 一台 Ubuntu 伺服器,並進行適當的設定。深入了解 設定 Ubuntu 伺服器.
- 已正確設定的 Python 開發環境.
- 資料庫伺服器,例如 MySQL。本指南將詳細說明 在 Ubuntu 伺服器上安裝和設定 MySQL.
本指南是我們 Django 系列教學的延續。首先,查看先前關於 設定 Django, 建立 Django 資料庫連線, 建立模型、以及 啟用 Django 管理介面.
在本指南中,我們將展示如何建立 Django 檢視(views),使網頁應用程式能夠正確處理網頁請求並傳回適當的回應。正如 Django 官方文件 所述,網頁回應可以是網頁的 HTML 內容、重新導向或 HTTP 錯誤。只要檢視函式(view functions)位於 Python 路徑中,就沒有固定的存放位置。然而,對於檔案的命名和放置有一些常見的慣例。本指南將遵循這些慣例。
步驟 1. 啟用虛擬環境
Django 最適合在 Python 虛擬環境中執行。我們的 Django 應用程式 sample_app 是在專用的虛擬環境中建立的。首先,啟用虛擬環境:
|
1 2 3 |
cd sample_app/ . sample_app_env/bin/activate |
步驟 2. 建立檢視函式
導覽至我們的 random_app 目錄,該目錄託管了我們部落格網站的模型:
|
1 |
cd random_app/ |
在這裡,檔案 views.py 將包含建立檢視所需的程式碼。在文字編輯器中開啟它:
|
1 |
nano views.py |

我們需要來自 render() 函式,它位於 django.shortcuts 程式庫中,因此第一行保持不變。 render() 函式 有助於結合範本(template)和上下文(context),並以適當的 HttpResponse 物件傳回。
第一個檢視將迎接到達首頁的使用者。我們必須匯入 函式 HttpResponse(),它來自 Django 程式庫 http:
|
1 2 3 4 5 6 7 8 |
from django.shortcuts import render from django.http import HttpResponse def index(request): return HttpResponse(您已到達歡迎頁面') def individual_post(request): return HttpResponse('個別文章將顯示於此') |

儲存檔案並關閉編輯器。
步驟 3. 將 URL 對應至檢視
目前沒有為這些函式指定 URL,因此無法存取它們。我們需要在 URL 設定檔中新增另一個區塊 urlpatterns。在 Python 中,這被稱為 URLconf (URL 設定)檔案。
Django 需要確定要使用的根 URLconf 模組。然後,它會尋找 urlpatterns,其中以清單結構包含所有 URL 模式。接著 Django 會遍歷該檔案,直到找到第一個相符項。一旦找到相符項,Django 就會尋找其關聯的檢視。此檢視函式將接收與該 URL 模式相關的資料以及一個 HttpRequest 物件。此程序中任何一點發生錯誤,都會將其重新導向至 錯誤處理檢視.
在文字編輯器中開啟 urls.py 的 random_app 檔案:
|
1 |
nano urls.py |
輸入以下程式碼:
|
1 2 3 4 5 6 7 |
from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), path('post/', views.individual_post, name='individual_post') ] |

儲存檔案並關閉編輯器。
完成後,我們還必須將 URL 檔案的路徑包含在 sample_app 目錄的 URLconf。否則,我們的 Django 應用程式將無法識別它。這是因為 URLconf 的 sample_app 被設置為 ROOT_URLCONF 於設定檔中。
導航至我們應用程式的目錄 sample_app:
|
1 |
cd sample_app/sample_app/sample_app/ |
![]()
在文字編輯器中開啟 urls.py 檔案:
|
1 |
nano urls.py |

在檔案中輸入以下程式碼:
|
1 2 3 4 5 6 7 |
from django.contrib import admin from django.urls import include, path urlpatterns = [ path('admin/', admin.site.urls), path('', include('random_app.urls')) ] |

讓我們測試一下變更。在 localhost:8000:
|
1 |
python manage.py runserver localhost:8000 |

導航至該 URL:
|
1 |
localhost:8000 |

檢查文章的 URL:
|
1 |
localhost:8000/posts |
步驟 4. 建立部落格文章
我們已經建立了 URL 模式並研究了它們的工作流程。現在是時候新增一個範例部落格並查看結果了。
從管理面板導航至 random_app 頁面:
|
1 |
localhost:8000/admin/random_app/ |

點擊 +Add 連結,從 Posts 列:

在新網頁上,它將呈現一個包含以下欄位的表單。
- Title (標題): 部落格文章的標題。
- Slug (別名): 指的是包含人類可讀關鍵字的有效網址部分。通常,slug 是根據文章標題建立的。
- Content (內容): 部落格文章的主體。
- Author (作者): 相關的使用者名稱。
點擊 SAVE 以提交文章:

步驟 5. 顯示資料庫中的資料
在接下來的章節中,我們將操作資料庫。以 Django 專用使用者身份登入 MySQL:
|
1 |
mysql -u sample_app_user -p |

讓我們驗證我們的文章是否已成功註冊到資料庫中:
|
1 |
USE sample_app_data; |

|
1 |
SELECT * FROM random_app_post; |

太棒了!文章已成功註冊!您現在可以退出 MySQL 終端機。
步驟 6. 其他視圖微調
我們還可以對視圖進行一些調整。在文字編輯器中開啟檔案:
|
1 |
nano views.py |
程式碼應該如下所示:
|
1 2 3 4 5 6 7 8 9 10 |
from django.shortcuts import render from django.http import HttpResponse from .models import Post def index(request): return HttpResponse('Hello, welcome to the index page.') def individual_post(request): recent_post = Post.objects.get(id__exact=1) return HttpResponse(recent_post.title + ': ' + recent_post.content) |

在這裡,我們新增了一個額外的 import 語句用於 Post。來自 HttpResponse 的引號字串也被替換為我們部落格文章中的資料。為了引用該資料,我們使用部落格文章 ID 與關聯的物件。該 ID 被儲存在變數 recent_post 中。現在,我們可以透過在物件後加上句點分隔符號和欄位名稱來提取該物件的特定欄位。
修改完成後,讓我們驗證變更。啟動 Django 伺服器:
|
1 |
python manage.py runserver localhost:8000 |

現在,存取 Posts 頁面:
|
1 |
localhost:8000/posts |

它應該會顯示我們建立的部落格文章。
步驟 7. 退出專案
要退出 Django 伺服器,請按 Ctrl + C 於終端機。要停用 Python 虛擬環境,請執行以下命令:
|
1 |
deactivate |
結語
在本指南中,我們已成功示範了如何建立視圖、對應 URL 模式,以及從 的資料庫中將文字顯示在網頁上random_app 在 Django.這些是 Django 的基本概念,是理解和掌握所必需的。
以下是協助您建立和管理 Django 應用程式的更多資源:
- 建立具有資料庫連線的 Django 應用程式:教學課程
- 在 Ubuntu 上使用 Docker 建置 Django 和 Gunicorn 應用程式
- 如何使用 Docker、Nginx 和 Let’s Encrypt 保護和擴充 Django 應用程式
祝您運算愉快!

留言
目前尚無留言。成為第一個留言的人吧。