当前位置: 首页 > news >正文

[特殊字符] Django 常用命令

🚀 Django 常用命令大全:从开发到部署

        Django 提供了许多实用的命令,可以用于 数据库管理、调试、测试、用户管理、运行服务器、部署 等。
        本教程将详细介绍 Django 开发中最常用的命令,并提供 示例,帮助你更高效地使用 Django。


📌 1. Django 开发环境相关命令

✅ 1.1 创建 Django 项目

 
django-admin startproject 项目名称
  • 作用:创建一个新的 Django 项目 {项目名称},生成 settings.pymanage.py 等文件。
  • 项目目录结构
     
    myproject/
    ├── manage.py
    ├── {项目名称}/
    │   ├── __init__.py
    │   ├── settings.py
    │   ├── urls.py
    │   ├── asgi.py
    │   ├── wsgi.py
    


✅ 1.2 创建 Django 应用(App)

 
python manage.py startapp 应用名称
  • 作用:在 myproject 项目下创建 {应用名称} 应用(App)。

  • 应用目录结构

     
    {应用名称}/
    ├── migrations/
    ├── __init__.py
    ├── admin.py
    ├── apps.py
    ├── models.py
    ├── tests.py
    ├── views.py
    

  • 注意:创建 App 后,需要在 settings.py 中注册:

     
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'myapp',  # ✅ 注册应用
    ]
    


📌 2. 运行服务器

✅ 2.1 启动 Django 服务器

 
python manage.py runserver
  • 作用:启动 Django 内置的开发服务器(默认监听 127.0.0.1:8000)。

  • 如果要修改端口

     
    python manage.py runserver 8080
    

  • 如果要监听所有 IP(适用于局域网调试):

     
    python manage.py runserver 0.0.0.0:8000
    


📌 3. 数据库操作

✅ 3.1 生成数据库迁移文件

 
python manage.py makemigrations
  • 作用:Django 检测 models.py 变更 并生成数据库迁移文件(不会真正修改数据库)。

✅ 3.2 应用迁移文件

 
python manage.py migrate
  • 作用执行 migrations/ 目录下的迁移文件,真正修改数据库。

✅ 3.3 显示所有迁移状态

 
python manage.py showmigrations
  • 作用:显示哪些迁移已应用,哪些未应用。

✅ 3.4 还原迁移(回滚)

 
python manage.py migrate myapp 0001_initial  # 回滚到某个迁移版本
python manage.py migrate myapp zero  # 删除所有迁移

✅ 3.5 清空数据库(危险!)

 
python manage.py flush
  • 作用:清除数据库中的所有数据(但不会删除表结构)。
  • ⚠️ 注意:这个命令会 清空所有用户数据!

✅ 3.6 强制重新应用迁移(危险!) 

python manage.py migrate --fake 应用名称 zero
python manage.py migrate 应用名称


📌 4. Django Shell(交互式调试)

✅ 4.1 启动 Django Shell

 
python manage.py shell
  • 作用:进入交互式 Python 环境,直接操作 Django ORM、查询数据库、调试代码

✅ 4.2 使用 Django Shell 查询数据

 
from myapp.models import Chat

# 查询所有 Chat 记录
chats = Chat.objects.all()
print(chats)

# 创建新数据
new_chat = Chat.objects.create(user_id=1, title="测试对话")
print(new_chat.id)

✅ 4.3 启动 Django Shell 并支持 IPython

 
python manage.py shell_plus --ipython
  • shell_plus(需要安装 django-extensions):
     
    pip install django-extensions
    好处
    • 自动加载所有 models.py
    • 更强的语法高亮
    • 更丰富的调试工具


📌 5. 用户管理

✅ 5.1 创建超级用户

 
python manage.py createsuperuser
  • 作用:创建 Django 管理员账户,可用于 http://127.0.0.1:8000/admin/
  • 示例
     
    Username: admin
    Email: admin@example.com
    Password: ******
    

✅ 5.2 修改用户密码

 
python manage.py changepassword admin
  • 作用:修改 admin 用户的密码。

✅ 5.3 查看所有用户

 
from django.contrib.auth.models import User
users = User.objects.all()
print(users)


📌 6. 测试 Django 应用

✅ 6.1 运行测试

 
python manage.py test 应用名称
  • 作用:运行 myapp/tests.py 里的所有测试。

✅ 6.2 编写简单测试

tests.py 里:

 
from django.test import TestCase
from myapp.models import Chat

class ChatTest(TestCase):
    def test_create_chat(self):
        chat = Chat.objects.create(user_id=1, title="测试聊天")
        self.assertEqual(chat.title, "测试聊天")

然后运行:

 
python manage.py test


📌 7. 静态文件管理

✅ 7.1 收集静态文件

 
python manage.py collectstatic
  • 作用:将 static/ 目录下的所有静态文件收集到 STATIC_ROOT 目录。


📌 8. 数据库备份与导入

✅ 8.1 导出数据库数据

 
python manage.py collectstatic
  • 作用:将数据库数据导出为 JSON 格式。

✅ 8.2 导入数据库数据

 
python manage.py loaddata db.json
  • 作用:从 db.json 重新导入数据。


📌 9. 生产环境相关

✅ 9.1 运行 Django 服务器(生产模式)

 
gunicorn myproject.wsgi:application --bind 0.0.0.0:8000
  • 需要安装 gunicorn
     
    pip install gunicorn
    

✅ 9.2 配置 ALLOWED_HOSTS

  • settings.py 里:
     
    ALLOWED_HOSTS = ["mywebsite.com", "127.0.0.1"]
    


🎯 结论

分类常用命令
创建项目startprojectstartapp
数据库操作makemigrationsmigrateflushshowmigrations
服务器runserver
用户管理createsuperuserchangepassword
Shell 调试shellshell_plus
测试test
生产环境collectstaticgunicorn

相关文章:

  • 使用OpenCV和MediaPipe库——实现人体姿态检测
  • 【高并发】深入解析 Netty:3W 学习法 + Java 实战 + 开源项目推荐
  • 【leetcode hot 100 240】搜索二维矩阵Ⅱ
  • flutter环境最新踩坑
  • 什么是TiDB,什么是分布式数据库?它和 MySQL 比优缺点是什么?
  • 【大模型学习】第十一章 什么是算力
  • vue实现日历签到效果
  • 代码随想录算法训练营第三十二天 | 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯
  • Cryptography 与 PyCryptodome 源码级解析
  • 爬虫逆向:脱壳工具BlackDex的详细使用
  • 发行思考:全球热销榜的频繁变动
  • [UE C++]实现自己的事件分发机制
  • Swift系列02-Swift 数据类型系统与内存模型
  • thinkphp5.1 在fetch模版就超时
  • Spring AI简单使用
  • 【JAVA架构师成长之路】【Spring生态】第1集:Spring生态核心
  • 使用QT + 文件IO + 鼠标拖拽事件 + 线程 ,实现大文件的传输
  • 在 macOS 上使用 CLion 进行 Google Test 单元测试
  • Van Uploader解决Android11及以下系统上传图片无反应问题
  • 【机械视觉】C#+visionPro联合编程———【一、C# + VisionPro 联合编程详解以及如何将visionPro工具加载到winform】
  • 网站界面排版/简易的旅游网页制作
  • wordpress 去谷歌/seo快速排名外包
  • 做音乐的网站/百度竞价推广的技巧
  • 动态网站开发基础教程课后习题答案/百度大数据平台
  • java可以做网站/如何在百度上发自己的广告?
  • 零基础网站建设教学/百度快照怎么用