3、环境搭建:Django项目初始化、数据库配置、虚拟环境管理、依赖安装
好,咱们正式开始动手了。
这一章,说白了就是搭台子。台子搭不好,后面唱戏全得翻车。我见过太多新手,代码写得挺溜,结果环境一塌糊涂,部署的时候哭都来不及。所以,咱们稳一点,一步步来。
3.1 虚拟环境管理:给你的项目一个“隔离区”
为什么要用虚拟环境?
你想想看,你电脑上可能同时有好几个Python项目。这个项目用Django 4.2,那个项目用Django 3.2,还有个老项目用Python 2.7。如果不隔离,它们会互相打架。我当年刚入行时就吃过这个亏——一个项目升级了依赖,结果另一个项目直接跑不起来了。嗯,从那以后,虚拟环境就成了我的标配。
我个人习惯用 venv,它是Python自带的,轻量又好用。当然,你也可以用 conda 或 pipenv,但咱们这个课程,就用最原生的方式。
创建虚拟环境:
# 进入你的项目目录
mkdir oa_attendance
cd oa_attendance
# 创建虚拟环境(我习惯叫 venv,但你可以随便起名)
python -m venv venv
激活虚拟环境,不同系统命令不一样:
| 操作系统 | 激活命令 |
|---|---|
| Windows (CMD) | venv\Scripts\activate |
| Windows (PowerShell) | venv\Scripts\Activate.ps1 |
| macOS / Linux | source venv/bin/activate |
激活成功后,你会看到命令行前面多了个 (venv) 标记。这就对了。
小技巧: 我习惯在项目根目录放一个 .gitignore 文件,把 venv/ 加进去。虚拟环境不要提交到Git仓库,别人拉下来自己建就行。
3.2 Django项目初始化:从零到有
虚拟环境激活后,先装Django。咱们用最新的稳定版,目前是4.2 LTS。
pip install django==4.2
装完之后,用Django提供的命令创建项目:
django-admin startproject config .
注意后面那个点 .,它表示在当前目录创建项目,而不是再套一层目录。我刚开始学的时候老忘加点,结果目录结构变成 oa_attendance/config/config/,看着就烦。
项目创建完,目录结构大概是这样:
oa_attendance/
├── manage.py # 项目管理脚本
├── config/ # 项目配置目录
│ ├── __init__.py
│ ├── settings.py # 配置文件(重点)
│ ├── urls.py # URL路由
│ ├── asgi.py
│ └── wsgi.py
└── venv/ # 虚拟环境
跑一下开发服务器,看看能不能起来:
python manage.py runserver
浏览器打开 http://127.0.0.1:8000,看到那个小火箭页面,恭喜你,第一步走通了。
注意: 这只是开发服务器,千万别用在生产环境。我曾经见过有人直接把 runserver 部署到线上,结果被DDoS打到服务器直接挂掉。生产环境请用 Gunicorn 或 uWSGI,后面章节会讲。
3.3 数据库配置:选哪个?怎么配?
考勤模块离不开数据库。Django默认用的是SQLite,开发阶段完全够用。但生产环境我建议用PostgreSQL,原因很简单——并发性能好,支持JSON字段,而且考勤数据量大了之后,SQLite真的扛不住。
咱们开发阶段先用SQLite,零配置,省心。打开 config/settings.py,找到 DATABASES 配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
如果你想换成PostgreSQL(我建议你提前装好,后面部署直接用),配置是这样的:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'oa_attendance',
'USER': 'postgres',
'PASSWORD': 'your_password',
'HOST': 'localhost',
'PORT': '5432',
}
}
记得先装 psycopg2:
pip install psycopg2-binary
避坑指南: 我曾经在生产环境用 psycopg2 而不是 psycopg2-binary,结果编译时缺依赖报错。如果你不想折腾编译环境,直接用 psycopg2-binary 就行,开发和生产都兼容。
3.4 依赖管理:把你的“食材清单”记下来
项目做完了,怎么让别人(或者未来的自己)知道装了什么依赖?
用 requirements.txt。这是Python项目的标准做法。
# 生成当前环境的依赖列表
pip freeze > requirements.txt
打开看看,内容大概是这样:
asgiref==3.7.2
Django==4.2
psycopg2-binary==2.9.9
sqlparse==0.4.4
...
别人拿到项目后,只需要一条命令就能复现环境:
pip install -r requirements.txt
我的习惯: 我会把 requirements.txt 分成两份:
requirements/base.txt—— 公共依赖(Django、数据库驱动等)requirements/dev.txt—— 开发依赖(django-debug-toolbar、ipython等)
这样生产环境只装 base.txt,干净又安全。
3.5 验证一下:跑通数据库迁移
环境搭好了,咱们跑一下Django自带的迁移,看看数据库能不能正常工作:
python manage.py migrate
你会看到一堆 OK,说明Django内置的表(用户、权限、会话等)已经创建成功了。
再创建一个超级管理员,后面管理后台要用:
python manage.py createsuperuser
按提示输入用户名、邮箱、密码。搞定。
启动服务器,访问 http://127.0.0.1:8000/admin/,用刚才创建的账号登录。看到Django管理后台,说明数据库配置完全没问题。
注意: 如果你用的是PostgreSQL,记得先手动创建数据库:
CREATE DATABASE oa_attendance;
Django不会自动帮你建库,只会建表。我第一次用PostgreSQL时就卡在这儿了,以为配置错了,折腾了半天才发现是库没建。
3.6 本章小结
好,环境搭建这块咱们就聊到这儿。总结一下今天干了什么:
- 创建了虚拟环境,把项目隔离起来
- 初始化了Django项目,跑通了开发服务器
- 配置了数据库(SQLite开发用,PostgreSQL生产用)
- 生成了
requirements.txt,管理依赖 - 跑通了数据库迁移,验证了环境可用
下一章,咱们开始创建考勤模块的App,写第一个模型。到时候你会看到,Django的ORM有多香。
公众号:蓝海资料掘金营,微信deep3321