IT策士 10余年一线大厂经验,专注 IT 思维、架构、职场进阶。我也会在其他平台持续发布最新文章,助你少走弯路。
为什么用 Django 做电商?系列介绍与环境搭建
大家好,我是IT策士,一名写了十几年后端的老兵。接下来 30 天,我将带着大家用 Django 从零开始敲出一个功能完整的电商平台。今天是系列的第一天,我们不急着写业务代码,先聊聊"为什么要学这个系列"、"为什么选 Django 做电商",然后手把手把开发环境搭起来。
一、为什么选择 Django 做电商?
很多初学者会纠结:Python 的 Web 框架这么多,Flask、FastAPI、Django......到底用哪个?做电商这种相对复杂的项目,我的观点很明确:选 Django,而且是非常合适的选择。
原因有三:
-
开箱即用的全栈能力
Django 自带 ORM、模板引擎、表单处理、认证系统、Admin 后台、中间件、缓存框架......这些东西在电商项目里几乎一个不落地要用上。Flask 需要你一个一个去拼装第三方库,而 Django 让你第一天就有生产力。
-
Admin 后台是"秘密武器"
做电商项目,运营人员需要管理商品、分类、订单、用户。Django Admin 可以通过极少量代码生成一套功能强大的后台管理系统,这在项目初期能节省至少 30% 的开发时间。
-
久经考验的生态与安全性
Django 默认防御 SQL 注入、XSS、CSRF 等常见攻击。支付、权限、异步任务这些场景都有成熟的第三方库支持(如 django-allauth、Celery、django-redis 等),国内也有支付宝、微信支付的 SDK 可以快速接入。
当然,任何技术选型都有取舍。如果你追求极致的高并发,可能会在后期引入 FastAPI 写微服务,但作为电商项目的"主干",Django 完全扛得住中小型电商的流量,非常适合学习与中小规模商业落地。
二、系列整体规划概览
整个系列计划用 30 篇 完成一个从前端展示到后端管理、从下单支付到部署上线的完整电商平台。下面是完整大纲,大家可以提前感受一下全貌:
今天的目标 :在本地搭建好 Python 虚拟环境,安装 Django 4.2,创建项目骨架,让开发服务器跑起来。项目代码结构会拆分成 users、products、cart、orders、payment 五个核心 app,这一天先把它们创建好,为明天正式写模型做准备。
三、开发环境准备
3.1 环境要求
-
Python 3.10 及以上(本系列使用 Python 3.11)
-
pip 最新版本
-
操作系统:macOS / Linux / Windows 均可,命令以 macOS/Linux 为主(Windows 同学请用 PowerShell 或 Git Bash,差异处我会特别说明)
3.2 项目目录结构规划
最终我们的项目结构大致如下,今天先感受一下:
bash
django_ecommerce/
├── manage.py
├── django_ecommerce/ # 项目配置目录
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ ├── asgi.py
│ └── wsgi.py
├── apps/ # 存放所有业务app
│ ├── users/ # 用户模块
│ ├── products/ # 商品模块
│ ├── cart/ # 购物车模块
│ ├── orders/ # 订单模块
│ └── payment/ # 支付模块
├── templates/ # 全局模板
├── static/ # 全局静态文件
├── media/ # 用户上传文件
└── requirements.txt
四、开始动手搭建
4.1 创建项目根目录与虚拟环境
打开终端,执行以下命令:
bash
# 1. 创建项目根目录并进入
mkdir django_ecommerce
cd django_ecommerce
# 2. 创建 Python 虚拟环境(名字叫 venv)
python3 -m venv venv
# 3. 激活虚拟环境
# macOS/Linux:
source venv/bin/activate
# Windows:
venv\Scripts\activate
激活成功后,终端前面会出现 (venv) 标识,代表我们已经在虚拟环境中了。
4.2 安装 Django 4.2
bash
# 升级 pip(好习惯)
pip install --upgrade pip
# 安装指定版本的 Django
pip install django==4.2
安装完成后,验证一下版本:
bash
python -m django --version
控制台输出:
(如果看到类似 4.2.x 的字样,说明安装成功。)
4.3 创建 Django 项目
bash
# 在当前目录下创建 Django 项目(注意结尾有个点,代表在当前目录生成)
django-admin startproject django_ecommerce .
解释 :命令中的 . 表示把项目创建在当前 django_ecommerce/ 目录下,而不是再多套一层同名文件夹。这样 manage.py 会直接出现在项目根目录,结构更清爽。
此时查看目录结构(ls -la 或 tree 都可以),会看到:
bash
django_ecommerce/
├── manage.py
├── django_ecommerce/
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ ├── asgi.py
│ └── wsgi.py
└── venv/
4.4 第一次启动开发服务器
在项目根目录下运行:
bash
python manage.py runserver
控制台输出:
bash
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 18, 2026 - 10:15:32
Django version 4.2, using settings 'django_ecommerce.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
看到这个提示,说明服务器已经跑起来了。打开浏览器访问 http://127.0.0.1:8000/,会看到 Django 的欢迎火箭页:
https://docs.djangoproject.com/en/4.2/_images/django_initial.png
注意:控制台中提示有 18 个未应用的迁移,那是 Django 内置应用(admin、auth 等)需要建表。我们今天先不管它,明天讲数据库设计时会一并处理。
五、创建业务 App 并调整目录结构
一个 Django 项目由多个 app(应用)组成,app 是功能模块的基本单位。按照我们之前规划的五大模块,依次创建:
5.1 创建 apps 目录并将所有 app 放进去
为了不让项目根目录变得乱糟糟,我们约定把所有业务 app 统一放在 apps/ 目录下。
bash
# 在项目根目录创建 apps 目录
mkdir apps
# 进入 apps 目录,依次创建 5 个 app
cd apps
python ../manage.py startapp users
python ../manage.py startapp products
python ../manage.py startapp cart
python ../manage.py startapp orders
python ../manage.py startapp payment
# 回到项目根目录
cd ..
5.2 把 apps 目录加入 Python 路径
创建完 app 后,Django 还需要知道 apps/users 这些模块在哪。我们需要在 settings.py 里配置一下路径。
打开 django_ecommerce/settings.py,在最顶部插入以下代码(放在 import os 之后也行):
bash
import os
import sys
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
# 将 apps 目录添加到 Python 搜索路径,方便直接使用 "users" 等模块名
sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
然后找到 INSTALLED_APPS 列表,把我们刚创建的 5 个 app 注册进去:
bash
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 自定义业务应用
'users',
'products',
'cart',
'orders',
'payment',
]
这样 Django 就能识别 apps/users、apps/products 等模块了。
5.3 验证配置是否生效
我们用一个最简的方式来验证:让项目启动时不会因为找不到 app 而报错,并且能在控制台看到 app 已被加载。
再运行一次开发服务器:
bash
python manage.py runserver
预期控制台输出(关键部分):
bash
System check identified no issues (0 silenced).
...
Starting development server at http://127.0.0.1:8000/
如果没有 ImportError 之类的报错,说明 app 配置正确。
六、调整语言、时区等基础配置
为了让项目更贴近国内开发习惯,我们把语言和时区改成中文。
继续编辑 django_ecommerce/settings.py:
bash
LANGUAGE_CODE = 'zh-hans' # 简体中文
TIME_ZONE = 'Asia/Shanghai' # 上海时区
USE_I18N = True
USE_TZ = True
修改后,再次启动开发服务器,你会发现 Admin 后台的一些提示(后面会看到)会变成中文。虽然现在还没有数据库,但先配置好总没错。
七、初识项目目录,建立全局视图
现在我们可以再看一次完整的项目结构(树形):
bash
django_ecommerce/
├── manage.py
├── django_ecommerce/
│ ├── __init__.py
│ ├── settings.py # 已修改:语言、时区、sys.path、INSTALLED_APPS
│ ├── urls.py
│ ├── asgi.py
│ └── wsgi.py
├── apps/
│ ├── users/
│ │ ├── __init__.py
│ │ ├── admin.py
│ │ ├── apps.py
│ │ ├── models.py # 明天在这里写用户模型
│ │ ├── tests.py
│ │ └── views.py
│ ├── products/
│ │ └── ... (结构同上)
│ ├── cart/
│ │ └── ...
│ ├── orders/
│ │ └── ...
│ └── payment/
│ └── ...
├── templates/ # 全局模板目录(后续创建)
├── static/ # 全局静态文件目录(后续创建)
├── media/ # 用户上传目录(后续创建)
└── venv/ # 虚拟环境(不纳入版本控制)
看着已经有点正规军的样子了,对吧?今天最重要的一件事就是把这个骨架搭好,后面每一天都是在这个骨架上添砖加瓦。
八、生成 requirements.txt
养成好习惯,当天结束前把依赖导出来,方便以后重建环境。
bash
pip freeze > requirements.txt
此时 requirements.txt 的内容大概是:
bash
asgiref==3.7.2
Django==4.2
sqlparse==0.4.4
(具体小版本号可能略有差异,没问题。)
九、今日总结与下集预告
今天我们完成了:
-
理解了为什么用 Django 做电商(开箱即用、Admin 后台、安全与生态)
-
浏览了接下来 30篇 的完整学习路线
-
在本地搭建了 Python 虚拟环境并安装了 Django 4.2
-
创建了项目骨架和 users / products / cart / orders / payment 五个核心 app
-
调整了基础配置(中文、时区、apps 路径)
-
启动了开发服务器,迈出了万里长征的第一步
下一篇 ,我们将进入电商项目最核心的阶段之一:需求分析与数据库设计。我们会梳理出用户、商品、订单、购物车等核心实体之间的关系,并开始编写第一个 Django 模型。数据库是整个项目的"地基",地基打牢了,后面写功能就如鱼得水。
有任何问题欢迎在评论区留言,我会尽量回复。如果觉得这个系列对你有帮助,别忘了点赞 + 收藏,咱们明天见!
还可以去其它平台搜索「IT策士」,一起升级 IT 思维 !