创建 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配置
├── 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.py 的 INSTALLED_APPS 中注册!
应用结构
blog/
├── __init__.py
├── admin.py # 后台管理配置
├── apps.py # 应用配置
├── models.py # 数据模型
├── tests.py # 测试文件
└── views.py # 视图逻辑
├── __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. 修改模型后先执行
2. 检查生成的迁移文件无误后再
3. 不要将迁移文件删除,应使用回滚命令
1. 修改模型后先执行
makemigrations2. 检查生成的迁移文件无误后再
migrate3. 不要将迁移文件删除,应使用回滚命令
数据库 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_PATHS 和 LANGUAGE_CODE。