Code前端首页关于Code前端联系我们

Django进阶:详细讲解如何使用常用命令进行内置manage.py shell开发

terry 2年前 (2023-09-24) 阅读数 84 #后端开发

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文件执行。

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

以下是一些常用的子命令]

python management .py [选项]

subcommand 是一个子命令;选项可选

  • startproject:创建项目 (*)
  • startapp:创建应用程序 (*)
  • runserver:运行开发服务器 (*)
  • shell:进入项目环境,终端 shell *)
  • dbshel​​l:输入django dbshel​​l命令,数据库交互
  • 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 数据库表中,如下图所示:

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

    如果要撤消所有数据库更改,可以使用零代替上面的命令:

    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

    11sqlmigrate

    功能:打印某个迁移对应的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.0Content-Transfer-Encoding: 7bitSubject: Test email from host on 2022-04-28 19:08:56.968492+00:00From: webmaster@localhostTo: my@address.comDate: Thu, 28 Apr 2022 19:08:56 -0000Message-ID: <165117293696.405310.3477251481753991809@host>

    发送,不报告错误。

    15diffsettings

    功能:可以显示当前配置文件与其他配置文件的差异。

    语法:

    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前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门