Django进阶:详细讲解如何使用常用命令进行内置manage.py shell开发
Django中的Django-admin.py和manage.py都是Django的命令工具包,用于处理系统管理相关操作。这两个文件的代码如下,包含的命令基本相同,并且manager.py(用于管理创建的项目)是在创建Django项目时自动生成的。 manage.py 是对 django-admin.py 的响应(通常仅用于创建项目和应用程序)。 ),它们的功能基本相同。 oDjango-admin.py和manage.py之间的区别
Django-admin.py是Django的命令行工具。这是一个可以在任何地方使用的全局命令。它提供了许多管理Django项目的命令,例如创建项目、创建应用程序、运行开发服务器等。使用 django-admin.py,我们可以执行各种管理任务,而无需进入特定的 Django 项目目录。
相比之下,manage.py 是所有 Django 项目中一个特殊的命令行工具。它是根据项目名称自动生成的,位于项目的根目录下,而django-admin则位于Python的Lib\site-packages\django\bin and Scripts文件夹中。 manage.py 提供与 django-admin.py 相同的功能,但其范围仅限于当前项目。即在项目目录下,我们必须使用manage.py来执行项目相关的管理任务。
使用django-admin.py和manage.py之间的区别在于它们的范围和用法。如果我们需要全局执行 Django 管理任务,我们可以使用 django-admin.py 文件。例如,我们可以使用以下命令创建一个新的 Django 项目:
django-admin.py startproject myproject
但是,如果我们需要在特定的 Django 项目中执行管理任务,我们可以使用 manage.py 文件。例如,可以使用以下命令运行开发服务器:
python manage.py runserver
另外,manage.py还提供了一些项目特定的命令,例如数据库迁移、创建超级用户等。这些命令只能通过manage.py文件执行。
以下是一些常用的子命令]
python management .py [选项]
subcommand 是一个子命令;选项可选
- startproject:创建项目 (*)
- startapp:创建应用程序 (*)
- runserver:运行开发服务器 (*)
- shell:进入项目环境,终端 shell *)
- dbshell:输入django dbshell命令,数据库交互
- check:检查django项目是否有问题,完整性检查
- flush:清除数据库内容,只留下空表消息。 :翻译语言文件数据库同步脚本(*)
- sqlflush:查看删除数据库创建的脚本(*)
- sqlmigrate:查看同步数据库所需的sql语句(*)
- 导入数据 export data dumpdata : data
- diffsettings: 查看当前配置文件与 django 默认配置(其他配置文件)的差异 Change password: 更改密码(*)
- delete: 删除会话
- test: 开始测试
- collectstatic:收集静态文件。如果设置了 STATIC_ROOT,collectstatic 命令将下载所有应用程序中名为 static 的所有文件夹及其子目录,并将其复制到 STATIC_ROOT 并收集。收集静态文件的目的是为了方便使用Apache或Nginx进行安装。
- inspectdb [table]:根据现有数据库逆向生成Django模型。可以选择数据表的名称
- 发送消息:收集所有消息,生成特定文件格式,例如xml文件以供以后翻译
- sendemail [email]:发送测试电子邮件
- sendtestemail:检测并更改电子邮件配置cachetable:Create Cache Table,Help
函数:寻求帮助
语法:,♷,♷函数:获取当前的Djangot版本
语法:
python manage.py version
3, check
功能:检查项目中的错误(检查完整性)
语法:❝ 功能:创建 Django 项目
语法:
django-admin startproject project_name [项目想要存放的路径]
5, startapp
功能:创建 Django APP 应用,首先要 cd 进入创建的项目文件夹 ❀ runserver
功能:当前机器启动一个 Web 服务器,运行 Django项目
语法:
#默认是8000端口 python manage.py runserver #指定IP和端口 python manage.py runserver 127.0.0.1:8000 #指定端口 python manage.py runserver 8000
7, shell
启动交互式窗口。
语法:
python manage.py shell
#如果想使用ipython、bpython交互模式的话需要先安装以上交互工具,安装命令:pip install ipython
#启用命令
python manage.py shell --i [ipyhton]
python manage.pyshell 启动一个 python 解释器,可用于测试存储在项目数据库中的数据。导入模型并获取模型的所有实例。
注意:每次更改模型时,都需要重新启动shell。这是您看到更改效果的唯一方法。
8、迁移
实际上会输入到数据库中执行。 Django使用migrations命令将Models中的所有更改写入数据库,例如新添加的模型或对现有字段的更改。
9, makemigrations
功能:检测模型变化,根据模型变化生成合适的Python代码,并创建新的数据库迁移文件。该代码用于更新数据库,保存在迁移目录中。
语法:
应用程序名称是可选的。如果一个项目包含多个应用,并且只修改了一个应用的模型,建议添加具体的应用名称
python manage.py makemigrations
python manage.py makemigrations [appname]
python manage.py showmigrations --verbosity 2
10, migrate
功能:同步数据库和模型,并将更改应用到模型中到数据库
语法:
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 命令并同时指定应用程序名称和迁移名称,数据库将重置为之前指定的值。变体。
python manage.py migrate myblog 0001_initial #指定blog应用恢复到0001_initial 这个版本
所有 Django 迁移信息都存储在 django_migrations 数据库表中,如下图所示:
如果要撤消所有数据库更改,可以使用零代替上面的命令:
python manage.py migrate blog zero
高级:
如果您想手动回滚已更新的数据库并且只想设置当前的迁移状态,请使用以下命令来实现。该命令实际上并不更新数据库。
语法:
python manage.py migrate blog zero
恢复应用程序,文件前的 [x] [ ]
migrate --false app_name null
migrate --False 日历不得为空顺序且日历必须反 -
删除应用下迁移模块中除init.py文件外的所有文件。
执行makemigrations calendars
初始迁移migration --fake-initial
将应用程序的当前执行提交到数据库迁移表中的文件0001_initial.py,但实际上并不执行文件中的代码。这样您就不会更改现有数据库,而是重置迁移文件,并且您不应再在迁移模块中看到推送文件。
此表将可用
class Meta:
db_table = "fta_solutions_app_solution"
management = True # 值必须为 Truehttps://torisimplex20. 16 /07/26/how-to-reset-migrations.html
11、sqlmigrate
功能:打印某个迁移对应的SQL语句。 ❙
python manage.py sqlmigrate blog 0001_initial
12♺❀迁移方式
功能:显示迁移记录
语法:
python manage.py showmigrations
如果记录前面有[X],则表示已安装到数据库中,如果不是,则 [ ]
迁移,其状态最初为 0 ?您可以使用inspectdb命令查看数据库结构,反之亦然,以根据数据库表生成模型。这样开发者就不再需要编写复杂的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'),)
...
14,sendtestemail
功能:能够检测和修改邮箱配置。
语法:
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>
发送,不报告错误。
15、diffsettings
功能:可以显示当前配置文件与其他配置文件的差异。
语法:
python manage.py diffsettings --default path.to.module --output Unified
在开发过程中,有时需要同时管理多个环境并解决差异。在这种特殊情况下,您应该使用 diffsettings 命令。具体参数解释如下:
-- all 用于显示所有配置
-- 默认 MODULE 里面的 MODULE 表示要与当前配置进行比较的配置模块。如果MODULE参数省略,则表示默认与Django配置比较
--output {hash, unity}用于指定输出格式,hash为默认模式;统一显示的输出规则:减号后的默认配置和加号后的更改配置是Django中用于管理和执行各种任务的两个命令行工具。 django-admin.py是一个全局命令,可以在任何地方使用,而manage.py是一个项目特定命令,只能在项目目录中使用。了解其中的差异以及如何使用它们有助于我们更好地管理和开发 Django 项目。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。