這篇教學透過 Django 實作建立一個陽春部落格。透過 Django Framework 指令快速構建網站框架。
透過簡單的專案體驗 Django 的基本功能。
本篇文章已經更新至 Python 3.13 與 Django 6 版。
版本需求
Python 3.13
Django 6.0
小提示
筆者是使用 Pyenv (Simple Python Version Management) 進行 Python 版本的切換與管理。
1 | pyenv install --list # 列出有安裝的 Python 版本 |
1. 建立虛擬環境
請先使用 cd %HOMEDRIVE%%HOMEPATH%\Desktop 移動路徑到桌面。
使用以下指令建立虛擬環境
1 | python -m venv .venv |
啟用虛擬環境,之後下載 Python 套件都會存放於對應的虛擬環境之下,避免套件相依性的干擾問題。
1 | source .venv/bin/activate # Mac/Linux |
當成功進入虛擬環境時會顯示虛擬環境名稱在指令前綴,如:
1 | (venv) C:\Users\wycha> |
小提示
離開虛擬環境的指令如下:
1 | deactivate |
以下開始的指令需要進入虛擬環境執行。
透過 pip 安裝套件:
1 | # pip install (套件名稱)(版本條件運算子)(版本號碼) |
執行結果
Collecting django==6
Using cached django-6.0-py3-none-any.whl.metadata (3.9 kB)
Collecting asgiref>=3.9.1 (from django==6)
Using cached asgiref-3.11.1-py3-none-any.whl.metadata (9.3 kB)
Collecting sqlparse>=0.5.0 (from django==6)
Using cached sqlparse-0.5.5-py3-none-any.whl.metadata (4.7 kB)
Using cached django-6.0-py3-none-any.whl (8.3 MB)
Using cached asgiref-3.11.1-py3-none-any.whl (24 kB)
Using cached sqlparse-0.5.5-py3-none-any.whl (46 kB)
Installing collected packages: sqlparse, asgiref, django
Successfully installed asgiref-3.11.1 django-6.0 sqlparse-0.5.5
[notice] A new release of pip is available: 25.2 -> 26.1.2
[notice] To update, run: pip install –upgrade pip
2. django-admin 初始化專案
請根據自己的桌面路徑執行以下程式碼:
1 | cd %HOMEDRIVE%%HOMEPATH%\Desktop |
確保專案資料夾建立於桌面
1 | # django-admin startproject (專案名稱) |
1 | # code (專案資料夾的路徑) |
方便後續開發流程,讓 VScode 開啟時可以自動載入虛擬環境。
在檔案總管的空白處新增資料夾
.vscode並且在該資料夾內建立settings.json新增以下程式碼至
settings.json1
2
3
4
5{
"python.terminal.activateEnvironment": true,
"python.defaultInterpreterPath": "C:\\Users\\admin\\Desktop\\.venv\\Scripts\\python.exe",
"terminal.integrated.defaultProfile.windows": "Command Prompt",
}其中
C:\\Users\\admin\\Desktop\\要替換成自己的桌面路徑Ctrl + Shift + P 輸入
Developer: Reload Window按下 Enter 重新啟動 VSCode
3. 管理程式 manage.py 構建 app
Ctrl + ` 開啟 VSCode 內的終端機,先檢查終端機是否自動進入虛擬環境,即終端機輸入開頭出現 (.venv)。
接著輸入以下指令建立新的 web app:
1 | # python manage.py startapp (APP 的名字) |
djangoBLOG 資料夾結構
1 | │ manage.py |
4. 修改 Django 框架的設定
1 | # line:28 |
- Line 28:
ALLOWED_HOSTS設定允許連線的來源 - Line 106:
LANGUAGE_CODE網站的預設語言。 - Line 108:
TIME_ZONE網站的時區 - Line 40:
INSTALLED_APPS啟用的 APP 清單注意
這邊的INSTALLED_APPS是一個 python list 的型態,因此每個元素需要加上逗點分隔。
接著,啟動【測試】伺服器:
1 | python manage.py runserver |
小提示
在終端機介面按下 Ctrl + C 停止測試伺服器
開啟瀏覽器連接上 http://127.0.0.1:8000/ 將會看到 django 初始化面,如下圖:

5. 定義資料模型 Models
構建一個 CMS(Content Management System) 系統,最重要的部分就是將資訊內容儲存於資料庫裡,方便後續維戶與更新。而 Django 框架提供 ORM(Object Relational Manager) 方式將資料庫邏輯構建成物件導向式的程式碼型態,可以節省開發人員維護資料庫結構的時間。
- 接下來我們到新增的 APP (
article/) 裡面models.py程式碼進行修改:
1 | from django.db import models |
讓資料模型生效需要執行以下指令:
1
2python manage.py makemigrations
python manage.py migrate執行結果
執行結果 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27(django_env) C:\Users\wycha\OneDrive\桌面\djangoBLOG>python manage.py makemigrations
Migrations for 'blog_post':
blog_post\migrations\0001_initial.py
- Create model Post
(django_env) C:\Users\wycha\OneDrive\桌面\djangoBLOG>python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, blog_post, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying blog_post.0001_initial... OK
Applying sessions.0001_initial... OK
6. 啟用管理介面並新增資料
Django 框架有提供後台管理介面給開發者使用,除了有使用者帳號模組以外,也包含資料庫管理模組於其中。啟用 admin 功能時需要建立超級使用者的使用者帳號密碼。
透過指令建立超級使用者
1
python manage.py createsuperuser
按照提示訊息進行輸入:
1
2
3
4
5
6
7使用者名稱 (leave blank to use 'wycha'): admin
電子信箱: admin@django_example.com
Error: 請輸入有效的電子郵件地址。
電子信箱: admin@djangoexample.com
Password:
Password (again):
Superuser created successfully.注意
- 使用者名稱為登入後台的帳號。
- 電子信箱可以使用假信箱作為替代,不過如果後須會使用到 email 發信功能時,請輸入正常使用中的 email 地址
- 終端機的系統互動介面 Password 欄位,基於安全性在輸入的時候不會有任何反應。
- 當然這些資料都可以在後台進行修改
將 APP 納入管理後台的程式中
1
2
3
4
5
6
7from django.contrib import admin
from article.models import Post
# Register your models here.
admin.site.register(Post)- Line 2: 表示將會使用到 APP.
models中的PostClass。 - Line 6: 使用
django.contrib中的adminClass,並把託管的 model 以參數形式傳入。
- Line 2: 表示將會使用到 APP.
進入後台並嘗試操作資料庫管理介面
1
python manage.py runserver
- 打開瀏覽器
- 輸入 http://localhost:8000/admin



注意
Slug欄位是作為文章的網址的資料,此欄位資料不重複、限定英文小寫與減字號 (-)、底線 (_) 符號,其餘字元盡量不要使用,特別是中文。

讓 admin 介面中的顯示其他欄位於總表上 (修改 )
專案資料夾/article/admin.py 1
2
3
4
5
6
7
8
9
10
11from django.contrib import admin
from article.models import Post
# Register your models here.
class PostAdmin(admin.ModelAdmin): # 新增
list_display = ['title', 'slug', 'pub_date'] # 新增
admin.site.register(Post, PostAdmin) # 修改- Line 8: 新增
PostAdminClass 繼承自admin.ModelAdmin並定義屬性list_display。 - Line 11: 將
PostAdminClass 作為第二參數傳入admin.site.register方法內
- Line 8: 新增

