创建 Django 项目

开始一个新的 Django 项目,包含基础配置和目录结构。

基础命令

django-admin startproject 项目名称

常用示例

django-admin startproject mysite
# 在当前目录创建 mysite 项目文件夹
django-admin startproject mysite .
# 在当前目录直接创建项目(不创建额外文件夹)
💡 提示: 建议先创建项目目录,进入后再执行命令,保持工作区整洁。

项目结构

mysite/
├── manage.py # 命令行工具
└── mysite/ # 项目配置目录
├── __init__.py
├── settings.py # 配置文件
├── urls.py # 路由配置
├── asgi.py # ASGI配置
└── wsgi.py # WSGI配置

创建 Django 应用

在项目中创建新的应用(App),每个应用负责一个功能模块。

基础命令

python manage.py startapp 应用名称

常用示例

python manage.py startapp blog
# 创建 blog 应用
python manage.py startapp users
# 创建 users 应用(用户管理)
⚠️ 注意: 创建应用后,必须在 settings.pyINSTALLED_APPS 中注册!

应用结构

blog/
├── __init__.py
├── admin.py # 后台管理配置
├── apps.py # 应用配置
├── models.py # 数据模型
├── tests.py # 测试文件
└── views.py # 视图逻辑

启动开发服务器

启动 Django 内置的开发服务器,用于本地开发和测试。

基础命令

python manage.py runserver

常用参数

参数 说明 示例
[端口] 指定端口号(默认8000) runserver 8080
[IP:端口] 指定IP和端口 runserver 0.0.0.0:8000
--noreload 禁用自动重载(提高性能) runserver --noreload
--nothreading 禁用多线程 runserver --nothreading

常用示例

python manage.py runserver 8080
# 使用8080端口
python manage.py runserver 0.0.0.0:8000
# 允许局域网其他设备访问
🚫 警告: 开发服务器仅用于开发环境,生产环境请使用 Gunicorn/uWSGI + Nginx。

数据库迁移

管理数据库架构变更,同步模型定义到数据库。

核心命令

1. 生成迁移文件

python manage.py makemigrations
# 检测模型变化,生成迁移文件
python manage.py makemigrations appname
# 只为指定应用生成迁移

2. 执行迁移

python manage.py migrate
# 执行所有未应用的迁移
python manage.py migrate appname
# 只迁移指定应用

3. 查看迁移状态

python manage.py showmigrations
# 显示所有应用的迁移状态

4. 回滚迁移

python manage.py migrate appname zero
# 回滚应用的所有迁移
python manage.py migrate appname 0001
# 回滚到指定迁移版本
💡 最佳实践:
1. 修改模型后先执行 makemigrations
2. 检查生成的迁移文件无误后再 migrate
3. 不要将迁移文件删除,应使用回滚命令

数据库 Shell

直接进入数据库命令行,执行原生 SQL 语句。

基础命令

python manage.py dbshell

支持的数据库

数据库 说明
SQLite 进入 sqlite3 命令行
MySQL 进入 mysql 客户端
PostgreSQL 进入 psql 客户端
⚠️ 注意: 直接操作数据库风险较高,建议优先使用 Django ORM。

数据导入导出

将数据库数据导出为 JSON/XML/YAML 格式,或从文件导入数据。

导出数据

python manage.py dumpdata > data.json
# 导出所有数据到 data.json
python manage.py dumpdata appname > appname.json
# 导出指定应用的数据
python manage.py dumpdata appname.ModelName > model.json
# 导出指定模型的数据

导入数据

python manage.py loaddata data.json
# 从 JSON 文件导入数据

常用参数

参数 说明
--format 指定格式:json, xml, yaml
--indent 设置缩进空格数
--exclude 排除指定应用或模型
python manage.py dumpdata --indent 2 --exclude auth --exclude contenttypes > data.json
# 格式化导出,排除系统表

创建超级用户

创建可以登录 Django 管理后台的超级管理员账号。

交互式创建

python manage.py createsuperuser
# 按提示输入用户名、邮箱、密码

命令行参数创建(非交互)

python manage.py createsuperuser --username admin --email admin@example.com
💡 提示: 密码在命令行不会显示,输入时请注意。密码长度至少8位,不能全为数字。

修改密码

修改指定用户的密码,无需知道原密码(管理员重置)。

基础命令

python manage.py changepassword 用户名

示例

python manage.py changepassword admin
# 重置 admin 用户的密码

Django Shell

交互式 Python 命令行,自动加载 Django 环境,可直接操作模型。

基础命令

python manage.py shell

增强版 Shell(推荐)

python manage.py shell -i ipython
# 使用 IPython(需先安装:pip install ipython)
python manage.py shell -i bpython
# 使用 Bpython(需先安装:pip install bpython)

常用操作示例

# 进入 shell 后可以直接导入模型操作
>>> from blog.models import Post
>>> Post.objects.all()
>>> Post.objects.create(title="Hello", content="World")
💡 技巧: Shell 是调试和批量操作数据的利器,比写视图测试更快捷。

运行测试

运行 Django 项目中的单元测试和功能测试。

基础命令

python manage.py test
# 运行所有测试

指定测试

python manage.py test blog
# 只测试 blog 应用
python manage.py test blog.tests.PostTestCase
# 测试指定测试类
python manage.py test blog.tests.PostTestCase.test_create_post
# 测试指定方法

常用参数

参数 说明
--verbosity 详细程度:0(静默), 1(默认), 2(详细)
--failfast 首次失败时停止
--keepdb 保留测试数据库(加速)
--parallel 并行运行测试

系统检查

检查 Django 项目的常见问题,无需运行服务器。

基础命令

python manage.py check
# 检查整个项目

部署前检查

python manage.py check --deploy
# 检查部署配置问题(安全、性能等)

检查指定应用

python manage.py check blog
⚠️ 重要: 生产环境部署前务必运行 check --deploy,它会检查安全设置。

收集静态文件

将所有应用的静态文件收集到统一目录,用于生产环境部署。

基础命令

python manage.py collectstatic
# 收集所有静态文件到 STATIC_ROOT

常用参数

参数 说明
--noinput 不提示确认(自动化脚本用)
--clear 先清空目标目录再收集
--link 创建符号链接而非复制(开发用)
--ignore 忽略匹配文件
python manage.py collectstatic --noinput --clear
# 生产环境常用:清空后重新收集
🚫 警告: 确保 settings.py 中已配置 STATIC_ROOT,否则命令会报错。

从模板创建应用

使用自定义模板创建应用,预设目录结构和文件。

使用内置模板

django-admin startapp --template=/path/to/template appname

使用远程模板

django-admin startapp --template=https://github.com/user/template/archive/main.zip appname
💡 用途: 团队开发时可创建统一的应用模板,规范项目结构。

国际化命令

多语言支持相关命令,用于提取、翻译和编译文本。

1. 提取翻译文本

django-admin makemessages -l zh_Hans
# 提取中文(简体)翻译文本
django-admin makemessages -a
# 为所有语言提取

2. 编译翻译文件

django-admin compilemessages
# 将 .po 文件编译为 .mo 文件

3. 创建语言文件

django-admin makemessages -l en -l zh_Hans -l ja
💡 注意: 执行前确保 settings.py 中已配置 LOCALE_PATHSLANGUAGE_CODE