在 Django 的 MVC 架構中,Template (模板) 是負責「View」層的畫面顯示部分。它將後端傳遞來的資料以 HTML 形式渲染,讓使用者看到結構化、有樣式的頁面。
1. Template 的功能與角色
Django Template 的用途:
- 動態產生 HTML 頁面
- 顯示後端資料 (如文章列表、使用者資訊)
- 控制頁面結構 (如條件判斷、迴圈)
- 支援模板繼承與組件化設計 (如 header、footer)
2. 建立模板檔案(HTML)
預設 Django 將從 templates/
資料夾中載入模板,因此需確保專案設定如下:
1 | # settings.py |
結構示意:
1 | project/ |
3. Template 的基本語法
Django 使用自有語法:
{{ 變數 }}
: 顯示資料{% 標籤 %}
: 執行邏輯指令 (如 if、for、include)
3.1 變數綁定(Variable)
1 | <h1>Hello, {{ username }}</h1> |
若 username = "Django"
,將顯示:
1 | Hello, Django |
也可使用物件屬性與方法:
1 | <p>文章標題:{{ article.title }}</p> |
3.2 條件判斷
{% if %}
1 | {% if user.is_authenticated %} |
3.3 迴圈控制
{% for %}
1 | <ul> |
也可用 forloop.counter
顯示索引(從 1 開始):
1 | {{ forloop.counter }} - {{ article.title }} |
3.4. 過濾器(Filters)
過濾器可對變數進行格式處理:
1 | {{ title|lower }} → 全小寫 |
4. 模板繼承 (Template Inheritance)
使用模板繼承可讓多個頁面共用相同框架 (如頁首、頁尾)。
base.html
(父模板):
1 |
|
home.html
(子模板):
1 | {% extends 'base.html' %} |
5. 模板引入 {% include %}
將重複區塊抽成單一檔案引入 (如導覽列、footer):
1 | <!-- base.html --> |
6. 靜態檔案 (CSS/JS 圖片等)
1 | {% load static %} |
靜態檔案通常放在
static/
資料夾中。
7. 常用模板語法總覽
語法 | 說明 |
---|---|
{{ variable }} |
輸出變數值 |
{% if %}...{% endif %} |
條件判斷 |
{% for %}...{% endfor %} |
迴圈 |
{% include 'file.html' %} |
引入子模板 |
{% extends 'base.html' %} |
繼承模板 |
{% block name %}...{% endblock %} |
區塊定義與覆寫 |
{% load static %} |
載入靜態檔案管理 |
{{ value | filter }} |
使用過濾器處理變數 |
8. Template 的最佳實踐
小技巧與建議:
- 使用模板繼承統一頁面結構
- 抽出可重用的 HTML 至
include/
或partials/
- 善用
if
/for
控制資料呈現邏輯 - 使用過濾器改善格式與輸出樣式
- 控制邏輯應保留在 View,Template 僅負責顯示