3、环境搭建:Django项目初始化、数据库配置、虚拟环境管理、依赖安装

好,咱们正式开始动手了。

这一章,说白了就是搭台子。台子搭不好,后面唱戏全得翻车。我见过太多新手,代码写得挺溜,结果环境一塌糊涂,部署的时候哭都来不及。所以,咱们稳一点,一步步来。

3.1 虚拟环境管理:给你的项目一个“隔离区”

为什么要用虚拟环境?

你想想看,你电脑上可能同时有好几个Python项目。这个项目用Django 4.2,那个项目用Django 3.2,还有个老项目用Python 2.7。如果不隔离,它们会互相打架。我当年刚入行时就吃过这个亏——一个项目升级了依赖,结果另一个项目直接跑不起来了。嗯,从那以后,虚拟环境就成了我的标配。

我个人习惯用 venv,它是Python自带的,轻量又好用。当然,你也可以用 condapipenv,但咱们这个课程,就用最原生的方式。

创建虚拟环境:

# 进入你的项目目录
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