Django 是什麼?框架介紹與安裝 | Django 教學
Django 是以 Python 撰寫的高階 Web 框架(Web Framework),自 2005 年發布以來,憑藉「電池全包」(Batteries Included)的設計哲學,成為 Python 生態系中最成熟、最受歡迎的 Web 開發框架之一。本文將帶你認識 Django 的歷史與核心理念,並從零開始完成安裝與第一個專案的建立。
Django 的誕生與歷史
Django 誕生於 2003 年,最初由 Adrian Holovaty 和 Simon Willison 在美國堪薩斯州的 Lawrence Journal-World 新聞網站開發團隊中建立。當時團隊需要快速開發和維護多個新聞網站,於是他們打造了一套可重複使用的 Web 框架來加速開發流程。
2005 年 7 月,Django 以開源(Open Source)方式正式對外發布,並以爵士吉他手 Django Reinhardt 的名字命名。2008 年,Django 軟體基金會(Django Software Foundation, DSF)成立,負責框架的長期維護與發展。
截至目前,Django 已發展到 5.x 版本,採用 BSD-3-Clause 開放原始碼授權,由全球活躍的開發者社群持續貢獻與維護。
「電池全包」哲學
Django 最核心的設計理念是 Batteries Included(電池全包),意思是框架本身就內建了 Web 開發所需的絕大多數功能,開發者不需要額外尋找和整合第三方套件。Django 內建的核心功能包括:
- ORM(Object-Relational Mapper,物件關聯映射) – 以 Python 類別操作資料庫,支援 PostgreSQL、MySQL、SQLite、Oracle
- Django Admin(管理後台) – 自動生成的後台管理介面,僅需少量設定
- 認證系統(Authentication System) – 內建使用者註冊、登入、權限管理
- 表單處理(Forms) – 表單宣告、驗證、HTML 渲染一體化
- 模板引擎(Template Engine) – Django Template Language(DTL)渲染引擎
- URL 路由(URL Routing) – 以函式或 path converter 定義網址對應
- 中介層(Middleware) – 請求與回應的全域處理機制
- 快取框架(Caching Framework) – 支援 Memcached、Redis 等多種快取後端
- 國際化與在地化(i18n / L10n) – 多語言網站支援
此外,Django 還內建了完整的安全防護機制,包括 CSRF(跨站請求偽造)防護、XSS(跨站腳本攻擊)防護、SQL Injection(SQL 注入)防護等,讓開發者從專案建立的第一天起就擁有堅實的安全基礎。
Django 的架構模式:MVT
Django 採用 MVT(Model-View-Template) 架構模式,這是從經典的 MVC(Model-View-Controller)模式演變而來。三者的對應關係如下:
| Django MVT | 傳統 MVC | 職責說明 |
|---|---|---|
| Model | Model | 定義資料結構,負責與資料庫互動 |
| View | Controller | 處理業務邏輯,協調 Model 與 Template |
| Template | View | 負責 HTML 頁面的呈現與渲染 |
Django 刻意將「Controller」的邏輯放入 View 層,並將畫面呈現交給 Template 層,讓命名更貼近 Web 開發的直覺。
Django vs Flask vs FastAPI 比較
Python 生態系中有三個主流的 Web 框架(Web Framework),各有不同的定位與適用場景:
| 比較項目 | Django | Flask | FastAPI |
|---|---|---|---|
| 類型 | 全功能框架(Full-stack) | 微框架(Micro) | 現代非同步框架 |
| 設計哲學 | 電池全包(Batteries Included) | 簡單核心,自由擴充 | 高效能,型別提示優先 |
| ORM | 內建 Django ORM | 無(常搭配 SQLAlchemy) | 無(常搭配 SQLAlchemy) |
| Admin 後台 | 內建 | 無 | 無 |
| 非同步支援 | Django 3.0+ 支援 ASGI | 有限 | 原生支援(async/await) |
| API 文件 | 需搭配 DRF + drf-spectacular | 需搭配 Flask-RESTful 等 | 自動生成 OpenAPI 文件 |
| 學習曲線 | 中等(功能多,概念完整) | 低(核心簡單) | 中等(需熟悉型別提示) |
| 適合場景 | 中大型 Web 應用、CMS、電商 | 小型 API、微服務、原型 | 高效能 API、微服務 |
如何選擇? 如果你的專案需要完整的使用者管理、後台介面、表單處理等功能,Django 是最佳選擇。如果你只需要一個輕量的 API 服務,Flask 或 FastAPI 會更合適。
Django 的知名使用者
許多全球知名的大型平台都選擇 Django 作為其後端技術棧,這充分證明了 Django 在效能、穩定性與可擴展性方面的實力:
- Instagram – 全球最大的圖片社群平台之一,是使用 Django 最具代表性的案例
- Pinterest – 知名的圖片收藏與靈感發現平台
- Disqus – 全球最大的第三方留言系統,每月處理數十億次請求
- Spotify – 部分後端服務使用 Django 建構
- Dropbox – 雲端儲存服務的部分後端系統
這些平台的規模說明了一件事:Django 不只適合初學者練習,更能勝任企業級的大規模應用。
安裝 Django:從零開始
接下來,我們將一步步完成 Django 的安裝。在開始之前,請確認你的電腦已安裝 Python 3.10 以上版本。
步驟一:確認 Python 版本
打開終端機(Terminal),輸入以下指令確認 Python 版本:
# 確認 Python 版本
python3 --version
# 輸出範例:Python 3.12.4
如果尚未安裝 Python,請前往 python.org 下載並安裝最新版本。
步驟二:建立虛擬環境
虛擬環境(Virtual Environment)是 Python 開發的最佳實踐。它能為每個專案建立獨立的套件空間,避免不同專案之間的套件版本衝突。
# 建立專案目錄
mkdir my_django_project
cd my_django_project
# 建立虛擬環境(命名為 venv)
python3 -m venv venv
建立完成後,啟用虛擬環境:
# macOS / Linux 啟用虛擬環境
source venv/bin/activate
# Windows 啟用虛擬環境
venv\Scripts\activate
啟用成功後,你會在終端機的提示符前方看到 (venv) 標記,表示目前正在虛擬環境中:
# 啟用後的提示符會變成這樣
(venv) $
步驟三:安裝 Django
在虛擬環境中,使用 pip 安裝 Django:
# 安裝最新版本的 Django
pip install django
# 輸出範例:
# Collecting django
# Downloading Django-5.2-py3-none-any.whl (8.3 MB)
# ...
# Successfully installed asgiref-3.8.1 django-5.2 sqlparse-0.5.3
安裝完成後,確認 Django 版本:
# 確認 Django 版本
python3 -m django --version
# 輸出範例:5.2
你也可以在 Python 互動式環境中確認:
# 在 Python shell 中確認
import django
print(django.get_version())
# 輸出:5.2
建立第一個 Django 專案
Django 安裝完成後,我們就可以建立第一個專案了。Django 提供了 django-admin 命令列工具來快速生成專案結構。
步驟一:使用 startproject 建立專案
# 建立名為 myproject 的 Django 專案
django-admin startproject myproject .
注意指令最後的 .(點號),它表示在當前目錄建立專案,而不是額外建立一層同名資料夾。執行後的目錄結構如下:
my_django_project/ # 你的專案根目錄
├── manage.py # Django 管理指令入口
├── myproject/ # 專案配置套件
│ ├── __init__.py # 標記為 Python 套件
│ ├── settings.py # 專案設定檔
│ ├── urls.py # URL 路由配置
│ ├── asgi.py # ASGI 入口(非同步伺服器)
│ └── wsgi.py # WSGI 入口(同步伺服器)
└── venv/ # 虛擬環境(不需提交至版本控制)
各檔案的用途說明:
- manage.py – 專案的管理工具入口,用來執行各種 Django 管理指令(如啟動伺服器、執行資料庫遷移等)
- settings.py – 專案的核心設定檔,包含資料庫配置、已安裝的 App、中介層等設定
- urls.py – 定義 URL 路由規則,將網址對應到對應的 View 函式
- wsgi.py – Web Server Gateway Interface 入口,用於部署到正式環境的同步伺服器(如 Gunicorn)
- asgi.py – Asynchronous Server Gateway Interface 入口,用於部署到支援非同步的伺服器(如 Uvicorn)
步驟二:啟動開發伺服器
現在,讓我們啟動 Django 內建的開發伺服器(Development Server)來確認一切運作正常:
# 啟動開發伺服器
python3 manage.py runserver
# 輸出如下:
# Watching for file changes with StatReloader
# Performing system checks...
#
# System check identified no issues (0 silenced).
#
# You have 18 unapplied migration(s). Your project may not work properly until
# you apply the migrations for app(s): admin, auth, contenttypes, sessions.
# Run 'python manage.py migrate' to apply them.
# May 24, 2026 - 00:00:00
# Django version 5.2, using settings 'myproject.settings'
# Starting development server at http://127.0.0.1:8000/
# Quit the server with CONTROL-C.
你會看到一段關於「unapplied migration(s)」的提示訊息,這是正常的,我們會在後續教學中處理。目前只要確認伺服器成功啟動即可。
步驟三:確認安裝成功
打開瀏覽器,前往 http://127.0.0.1:8000/,你應該會看到 Django 的歡迎頁面,上面顯示一隻火箭圖案和「The install worked successfully! Congratulations!」的訊息。
看到這個畫面,代表你的 Django 開發環境已經設定完成。
如果你想要指定不同的埠號(Port),可以在指令後方加上埠號:
# 使用 9000 埠啟動開發伺服器
python3 manage.py runserver 9000
# 這時請前往 http://127.0.0.1:9000/ 查看
按下 Ctrl + C 即可停止開發伺服器。
manage.py 常用指令一覽
manage.py 是 Django 專案的指令中心,以下是你在開發過程中最常使用的指令:
| 指令 | 用途 |
|---|---|
runserver [port] | 啟動開發伺服器(預設 8000 埠) |
startapp <app_name> | 建立新的 Django App |
makemigrations | 掃描 Model 變更並產生資料庫遷移檔 |
migrate | 執行未套用的資料庫遷移 |
createsuperuser | 建立管理員帳號 |
shell | 開啟載入 Django 環境的 Python 互動式 shell |
collectstatic | 收集所有靜態檔案至指定目錄 |
test | 執行測試套件 |
這些指令我們會在後續的教學文章中逐一深入介紹。
總結
本文帶你認識了 Django 這個強大的 Python Web 框架:從 2005 年誕生的歷史背景,到「電池全包」(Batteries Included)的設計哲學,再到與 Flask、FastAPI 等框架的定位差異。我們也實際動手完成了 Django 的安裝流程——建立虛擬環境、安裝 Django、建立第一個專案、啟動開發伺服器,並成功看到 Django 的歡迎頁面。
Django 的 MVT 架構、內建的安全防護、以及豐富的功能模組,讓它成為從個人專案到 Instagram 等大型平台都能信賴的技術選擇。在接下來的教學中,我們將深入探索 Django App 的建立、Model 的定義,以及資料庫遷移等核心概念,一步步帶你掌握 Django 開發的完整技能。