三十二、Django进阶:内置manage.py shell开发常用命令用法详解

在Django里django-admin.py和manage.py都是Django的命令工具集,用于处理系统管理相关操作,这两个文件代码和包含命令基本是一样的,而manage.py(用来管理创建好了的项目)是在创建Django工程时自动生成的,manage.py是对django-admin.py(一般只用来创建项目)的简单包装,二者的作用基本一致。

参考:django-extensions: django-extensions · PyPI

区别

1. django-admin存放在Python的site-packages\django\bin里,manage.py存放在项目工程文件夹里。

2. django-admin可以对不同的项目进行设置,而manege.py只能对当前的工程有效。

语法:

django-admin <subcommand> [options]

manage.py <subcommand> [options]

subcommand是子命令;options是可选的

常用子命令:

startproject:创建一个项目(*

startapp:创建一个app*

runserver:运行开发服务器(*

shell:进入django shell,项目环境终端*

dbshell:进入django dbshell,数据库交互

check:检查django项目有没有问题,完整性检查

flush:清空数据库内容,只留下空表

compilemessages:编译语言文件

makemessages:创建语言文件

makemigrations:生成数据库同步脚本(*

migrate:同步数据库(*

showmigrations:显示所有数据库迁移文件,即生成的数据库同步脚本(*

sqlflush:查看生成清空数据库的脚本(*

sqlmigrate:查看数据库同步的sql语句(*

dumpdata:导出数据

loaddata:导入数据

diffsettings:查看当前的配置文件和django默认配置(其他配置文件)的不同之处

manage.py特有的一些子命令:

createsuperuser:创建超级管理员(*

changepassword:修改密码(*

clearsessions:清除session
test: 开始测试
collectstatic:搜集静态文件,如果设置了STATIC_ROOTcollectstatic命令的时候,会将各app下所有名为static的文件夹及其子目录复制收集到STATIC_ROOT。把静态文件集中一起的目的是为了更方便地通过ApacheNginx部署。
inspectdb [table]:根据已有数据库反向生成django模型。可以选择数据表名字
makemessages:搜集所有的messages,可以生成指定文件格式如xml文件,供后期翻译
sendemail [email]:发送测试邮件
sendtestemail:可以检测和修改邮箱配置。
createcachetable:创建缓存表

1help

作用:获得帮助信息

语法:

#显示帮助信息和可用命令

python manege.py help

#显示可用命令列表

python manege.py help --commands

#显示指定命令的详细文档

python manage.py help  #commands为需要指定显示的命令

2version

作用:获取到当前DJango的版本

语法:

python manage.py version

3check

作用:检查工程中是否存在错误(检查完整性)

语法:

python manage.py check [appname]   #命令后面跟APP名称

4startproject

作用:创建Django工程

语法:

django-admin startproject project_name [项目想要存放的路径]

5startapp

作用:创建Django APP应用程序,需要先cd进入创建的项目文件夹

语法:

django-admin startapp name [应用想要存放的路径]

python manage.py startapp app_name

6runserver

作用:在当前机器启动一个Web服务器,运行Django项目

语法:

#默认是8000端口

python manage.py runserver

#指定IP和端口

python manage.py runserver 127.0.0.1:8000

#指定端口

python manage.py runserver 8000

7shell

作用:启动一个交互窗口,排除故障。

语法:

python manage.py shell
#如果想使用ipython、bpython交互模式的话需要先安装以上交互工具,安装命令:pip install ipython
#启用命令
python manage.py shell --i [ipyhton]

python manage.py shell启动一个python解释器,可以用它来测试存储在项目数据库中的数据。导入模型、获取模型的所有实例。

注意:每次修改模型后,要重启shell。这样才能看到修改的效果。

8migrations

将真正提交到数据库执行。Django通过migrations命令将Models中的任何修改写入到数库中,比如:新增加的模型或修改已有的字段等。

9makemigrations

作用:检测模型变化,根据models的变化生成对应的Python代码,生成新的数据库迁移文件,该代码用于更新数据库,保存在migrations目录下。

语法:

app名字可选。如果一个项目包含多个app,而只更改了其中一个app的模型,建议后面加入具体的app名

python manage.py makemigrations
python manage.py makemigrations [appname]
python manage.py showmigrations --verbosity 2

10migrate

作用:同步数据库与模型,将model里的修改应用到数据库

语法:

python manage.py migrate #默认是所有的APP的修改应用到数据库

python manage.py migrate [appname] #指定APP的修改应用到数据库

python manage.py migrate [appname] [migrations_name] #将操作恢复到指定版本
在迁移数据时 添加应用名称  app名称
python manage.py migrate app_name --database=data_center
python manage.py migrate --database=data_center

注意:

如果执行migrate的命令同时给了应用程序的名字和migtrations名字,系统会把数据库恢复到之前指定的一个版本。

python manage.py migrate myblog 0001_initial #指定blog应用恢复到0001_initial 这个版本

Django所有的migration信息都保存在django_migrations这个数据库表中,如下图所示:

如果想撤销所有的数据库更改,可以使用zero代替上面的命令:

python manage.py migrate blog zero

高级用法:

如果数据库里,已经手动更新了数据库,只是想设置当前的migration状态,就使用下面的命令去实现,这个命令并不会真正的去更新数据库。

语法:

python manage.py migrate blog zero

重置app,文件前的 [x] 变成了[ ]

migrate --fake app_name zero

migrate --fake calendars zero  # --fake 和 calendars的顺序不能反

删除 app下的migrations模块中 除 init.py 之外的所有文件。

执行makemigrations calendars

初始迁移 migrate --fake-initial

会在数据库中的 migrations表中记录当前这个app 执行到 0001_initial.py ,但是它不会真的执行该文件中的代码。这样就做到了,既不对现有的数据库改动,而又可以重置 migraion 文件,再也不用在 migration模块中看到一推文件了。

到此表就可以出来了

class Meta:

    db_table = "fta_solutions_app_solution"

    managed = True  # 此处的值需要为True

https://simpleisbetterthancomplex.com/tutorial/2016/07/26/how-to-reset-migrations.html

11sqlmigrate

作用:输出某一个migrate对应的SQL语句

语法:

python manage.py sqlmigrate blog 0001_initial

12showmigrations

作用:显示migrations记录

语法:

python manage.py showmigrations

记录前有[X]的表示已经部署到数据库里去了,没有的则显示 [ ]

迁移及其状态初始为0

12changepassword

作用:修改指定用户的密码

语法:

python manage.py changepassword username

13inspectdb

作用:如果想基于现有的数据库(由其他系统管理)构建项目,可以使用inspectdb命令查看该数据库的结构,并根据数据库表反向生成Model。这样,开发者就无需再写复杂的SQL语句去使用数据了

语法:

python manage.py inspectdb

# 这是一个自动生成的`Django`model模块

# 必须手动执行以下操作:

#   * 重新排列model的顺序

#   * 确保每个model都有一个`primary_key=True`字段,这样就可以指定自定义主键了

#   * 确保给每个`ForeignKey`和`OneToOneField`都设置了`on_delete`,`ForeignKey`是关系字段,表示外键关联关系;`OneToOneField`是一对一字段,用来扩展已有字段。

#   * 如果想在Django中创建、修改、删除数据表,需要移除`managed = False`这一行

# 可以重命名model,但不能重命名db_table值和字段名

class AuthPermission(models.Model):
    content_type = models.ForeignKey('DjangoContentType', models.DO_NOTHING)
    codename = models.CharField(max_length=100)
    name = models.CharField(max_length=255)
 
    class Meta:
        managed = False
        db_table = 'auth_permission'
        unique_together = (('content_type', 'codename'),)

14sendtestemail

作用:可以检测和修改邮箱配置。

语法:

python manage.py sendtestemail my@address.com

通过使用sendtestemail命令发送如下代码:

Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: Test email from host on 2022-04-28 19:08:56.968492+00:00
From: webmaster@localhost
To: my@address.com
Date: Thu, 28 Apr 2022 19:08:56 -0000
Message-ID: <165117293696.405310.3477251481753991809@host>

发送不报错即可。

15diffsettings

作用:可以显示出当前配置文件与其他配置文件的差异。

语法:

python manage.py diffsettings --default path.to.module --output unified

在开发过程中,有时需要同时处理多个环境,并对不同之处进行调试。在这种特殊的场景下,就需要用到diffsettings命令。具体参数解释如下:

        --all用来显示所有的配置

     --default MODULE 中的MODULE表示要与当前配置进行比较的配置模块,如果省略了MODULE参数,则表示与Django的默认配置进行比较

       --output {hash, unified}用来指定输出格式,hash是默认模式;unified显示的输出规则为:减号后面的是默认配置,加号后面的是改变后的配置

输入才有输出,吸收才能吐纳。——码字不易


更多资料 · 微信公众号搜索【CTO Plus】关注后,获取更多,我们一起学习交流。

关于公众号的描述访问如下链接


关于Articulate“做一个知识和技术的搬运工。做一个终身学习的爱好者。做一个有深度和广度的技术圈。”一直以来都想把专业领域的技https://mp.weixin.qq.com/s/0yqGBPbOI6QxHqK17WxU8Q 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Django manage.py命令Django框架中的一个命令行工具,用于执行各种管理任务,如创建数据库、运行开发服务器、执行数据库迁移等。通过在终端中输入“python manage.py”加上相应的命令,可以执行各种管理任务。例如,“python manage.py runserver”可以启动开发服务器,“python manage.py migrate”可以执行数据库迁移。 ### 回答2: djangomanage.py命令是一个用于管理和执行各种django项目操作的命令行工具。 通过在终端或命令行中运行manage.py命令,可以执行以下操作: 1. 启动开发服务器:使用`python manage.py runserver`命令可以启动一个开发服务器,用于在开发环境中运行django应用程序。 2. 迁移数据库:使用`python manage.py makemigrations`命令可以创建数据库迁移文件,用于修改数据库结构。然后使用`python manage.py migrate`命令可以应用这些迁移文件,更新数据库结构。 3. 创建超级用户:使用`python manage.py createsuperuser`命令可以创建一个拥有管理员权限的超级用户,用于管理django应用程序。 4. 执行单元测试:使用`python manage.py test`命令可以执行django应用程序中的单元测试。 5. 生成管理后台模板代码:使用`python manage.py startapp`命令可以创建一个新的django应用程序,并使用`python manage.py startapp myapp`命令可以生成一个包含默认模板代码的admin.py文件,用于自定义管理后台。 6. 收集静态文件:使用`python manage.py collectstatic`命令可以将静态文件(如CSS、JS和图像文件)从各个应用程序收集到一个单独的目录中,以便在生产环境中行静态文件的管理。 总之,manage.py命令django中非常强大和实用的命令行工具,可以方便地行各种管理和操作。它简化了django项目的开发和管理流程,提高了开发效率。 ### 回答3: Django是一个开源的Python web开发框架,提供了一系列方便的工具和库来简化开发过程。其中,manage.pyDjango命令行工具,用于执行各种管理操作。 manage.py的使用非常简单,只需在命令行中输入python manage.py以及相关参数即可调用不同的命令。以下是一些常见的manage.py命令及其功能: 1. runserver:运行开发服务器,用于本地开发和调试。通过指定IP地址和端口号,可以启动一个轻量级的Web服务器来快速测试应用程序。 2. startapp:创建新的Django应用程序。通过指定应用程序名称,manage.py会自动创建必要的目录结构和文件,帮助开发人员快速搭建应用程序的基础。 3. makemigrations:生成数据库迁移脚本。当我们对模型文件行修改或新增时,manage.py可以帮助我们自动生成相应的数据库迁移脚本,方便数据库更新和版本控制。 4. migrate:执行数据库迁移操作。通过运行manage.py migrate命令Django会按照之前生成的迁移脚本,将修改应用到数据库中。 5. shell:启动Django的交互式Python shell。这个shell环境已预加载有Django的配,可以方便地行数据库查询操作和调试。 除了以上常用命令外,manage.py还提供了许多其他功能,如创建超级用户、导入/导出数据等。通过查阅Django文档,可以了解到管理命令的完整列表和详细使用说明。 总结:manage.pyDjango框架提供的命令行工具,用于执行各种管理操作,包括运行开发服务器、创建应用程序、生成数据库迁移脚本、执行数据库迁移等。它是Django开发中的一个重要工具,方便开发人员快速开发、调试和管理工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SteveRocket

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值