第一個 View¶
開始之前¶
任務目標
在這個章節中,我們會完成:
- 了解 View 和 URL 的概念
- 建立第一個 View 函式
- 設定 URL 路由
- 在瀏覽器中查看結果
什麼是 View?¶
View 是 Django 中處理請求並返回回應的函式或類別。當使用者訪問某個 URL 時,Django 會呼叫對應的 view 來處理請求。
什麼是 URL?¶
URL 設定定義了網址與 view 之間的對應關係。Django 使用 URL 設定來決定哪個 view 應該處理特定的請求。
URL 的結構¶
以這個網址為例:
http://127.0.0.1:8000/hello/world/?name=django#section
| 部分 | 範例 | 說明 |
|---|---|---|
| 協定 | http:// |
通訊協定(http 或 https) |
| 主機:埠號 | 127.0.0.1:8000 |
伺服器位址或域名和埠號 |
| 路徑 | /hello/world/ |
Django URL 處理的部分 |
| 查詢參數 | ?name=django |
傳遞給 view 的參數(透過 request.GET 取得) |
| 片段 | #section |
瀏覽器端使用,不會傳到伺服器 |
Django 處理的部分
Django 的 URL 只處理路徑部分。
你可以定義類似這樣的語法 path('hello/', views.hello_world),這樣當使用者使用網址 http://127.0.0.1:8000/hello/ 時 Django 就會執行 view.hello_world
建立 Hello World View¶
步驟 1:建立 View 函式¶
編輯 practices/views.py 檔案:
from django.http import HttpResponse
def hello_world(request):
return HttpResponse("Hello, World!")
這個 view 函式:
- 接收一個
request參數含有使用者的請求相關資訊(Django 呼叫時會自動傳入) - 返回一個
HttpResponse物件包含要回應給呼叫者的資訊以及要顯示的內容
步驟 2:設定 URL¶
直接在專案的 core/urls.py 中設定 URL:
from django.contrib import admin
from django.urls import path
from practices.views import hello_world
urlpatterns = [
path("admin/", admin.site.urls),
path("hello/", hello_world, name="hello_world"), # (1)!
]
name是幫這個路徑取一個名字方便我們後面使用,後面講到應用時再詳細解釋
步驟 3:測試¶
啟動開發伺服器:
在瀏覽器中訪問 http://127.0.0.1:8000/hello/,你應該會看到 "Hello, World!"。
成功!
如果看到 "Hello, World!" 的文字,恭喜你建立了第一個 View!
重構:將 URL 移到 App 中¶
目前我們把 URL 設定放在專案的 core/urls.py 中,這樣可以快速看到結果。但當專案變大時,把所有 URL 放在一起會變得難以維護。
更好的做法是將 URL 設定放在各自的 App 中。
步驟 1:在 App 中建立 urls.py¶
在 practices 目錄中建立 urls.py:
from django.urls import path
from practices import views
urlpatterns = [
path("hello/", views.hello_world, name="hello_world"),
]
步驟 2:修改專案的 urls.py¶
修改 core/urls.py,使用 include() 引入 App 的 URL:
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path("admin/", admin.site.urls),
path("practices/", include("practices.urls")), # (1)!
]
- 這邊我們在
path()中加入practices/的前綴,目的是為了避免衝突
上面這個範例的意思是如果今天使用者訪問了 practices/ 開頭的路徑,就會到 practices/urls.py 中繼續尋找是否有匹配的路徑
步驟 3:測試¶
重新整理瀏覽器,確認 http://127.0.0.1:8000/practices/hello/ 仍然可以正常顯示。
為什麼要這樣做?
將 URL 設定放在各自的 App 中有幾個好處:
- 模組化 - 每個 App 管理自己的 URL
- 可重用 - App 可以輕鬆移植到其他專案
- 易維護 - 專案變大時更容易管理
- 職責清晰 - 一眼就能看出這個 URL 屬於哪個 App
重點整理¶
| 概念 | 說明 |
|---|---|
| View | 處理請求並返回回應的函式 |
| URL Pattern | 定義網址與 view 的對應關係 |
| HttpResponse | Django 用來返回 HTTP 回應的類別 |
| path() | 定義 URL 路由的函式 |
任務結束¶
完成!
恭喜你完成了這個章節!現在你已經:
- 了解 View 和 URL 的概念
- 建立第一個 View 函式
- 設定 URL 路由
- 在瀏覽器中查看結果