Django 3.0应用开发详解
上QQ阅读APP看书,第一时间看更新

3.3 常用命令介绍

框架命令很多,但我们无须刻意去记忆,可以通过以下方式获取相关命令的介绍。

  • django-admin help方式:获取应用下的所有命令集合,包含框架可用命令集合。
  • django-admin help –commands方式:获取框架可用命令集合。
  • django-admin help <command>方式:获取具体某个命令的使用参数及用法说明。

根据发布源头的不同,框架命令可以分为原生命令、系统加载应用命令、自定义应用命令三种。其中,原生类型为Django框架的基本命令,其归属的应用为django,该类命令不论何种情况下都可使用;系统加载应用命令归属于系统自带的一些应用(如admin模块),该类命令需所在工程在配置文件中的INSTALLED_APPS中加载了相关应用才可在工程中使用;自定义应用命令则完全属于个性化开发的功能。一般而言,常用的命令指令所指的主要为原生命令,特殊情况下也会使用一些系统加载应用命令。

根据用途不同,框架命令可分为数据库操作命令、环境配置命令以及开发调试命令,数据库操作命令主要用于与数据库的交互,开发调试命令主要用于代码的测试验证,环境配置命令主要用于Django工程的各类文件生成。

3.3.1 数据库操作命令

框架命令中有不少命令与数据库有关,具体如下。

1. createcachetable

原型:django-admin createcachetable

使用说明:创建一个缓存用数据表,该表用于为在配置文件中声明的缓存中间件提供支持。

该方法包含如下常用参数。

--database DATABASE

用于指定生成缓存表的数据库,默认情况下该参数指定配置文件中数据库的default设置的数据库。

2. dbshell

原型:django-admin dbshell

使用说明:通过命令行的方式使用配置文件中设置的数据库引擎,可根据数据库引擎设置分别连接PostgreSQL、MySQL、SQLite或Oracle等数据库。

该方法包含如下常用参数。

--database DATABASE

用于指定生成缓存表的数据库,默认情况下该参数指定配置文件中数据库的default设置的数据库。

--ARGUMENT 

用于指定特别参数判断,通过“--”分隔符作为判断依据,可根据不同数据库客户端设置不同的连接参数(Django 3.1新增功能)。

3. dumpdata

原型:django-admin dumpdata [app_label[.ModelName]

使用说明:导出指定应用的数据库表数据,如果不指定应用名称,则导出工程下所有应用的数据库表数据。默认情况下,使用默认的模型管理类来导出相关数据库表数据。

该方法包含如下常用参数。

--all, -a

其功能是使用Django的基本数据库管理类来导出数据。

--format FORMAT

其功能是按照规定的格式输出导出结果,默认情况下为json格式,还可设置为xml格式和yaml格式。

--indent INDENT

其功能是规定输出内容的缩进长度,默认情况下为None,表示所有数据显示在一行。

--exclude EXCLUDE, -e EXCLUDE

用于避免工程中某些应用或者模型(采用“应用名称.格式名称”表示)被导出,如果需要避免多个内容被导出,则需要多次使用该参数。

--database DATABASE

其功能是规定导出数据所在的数据库,默认情况下导出default中设置的数据库。

--output OUTPUT, -o OUTPUT

其功能是规定要写入的文件,默认情况下,数据自动生成标准路径下文件。

4. flush

原型:django-admin flush

使用说明:移除数据库中业务表中的数据,而通过migrate生成的相关记录的表则不被删除。如果需要完全重建,则需要删除数据库中所有表,再运行migrate命令。

该方法包含如下常用参数。

--database DATABASE

其功能是规定需要清除的数据库,默认情况下清除default中设置的数据库。

5. inspectdb

原型:django-admin inspectdb [table [table ...]]

使用说明:检查数据库中所有的表并为每张表生成输出的模型类。

该方法包含如下常用参数。

--database DATABASE

其功能是规定将进行数据检测的数据库,默认情况下检测default中设置的数据库。

6. loaddata

原型:django-admin loaddata fixture [fixture ...]

使用说明:查询固定信息内容并将之导入数据库中。

该方法包含如下常用参数。

--database DATABASE

其功能是规定将导入数据的数据库,默认情况下导入数据到default中设置的数据库。

--ignorenonexistent, -i

其功能是忽略内容中存在而数据库表中不存在的表或者字段信息。

--app APP_LABEL

此参数规定只导入指定的应用中的相关数据。

--exclude EXCLUDE, -e EXCLUDE

此参数用于将相关应用或模型(采用“应用名称.模型名称”方式)排除,在导入中不考虑。

7. makemigrations

原型:django-admin makemigrations [app_label [app_label ...]]

使用说明:根据工程中模型的检测结果生成数据库迁移脚本文件。

该方法包含如下常用参数。

--empty

其功能是为特定应用生成一个空的迁移文件,用于编辑。

--dry-run

其功能是显示迁移信息而不实际生成相关文件信息。当同时采用参数--verbosity 3时相当于完全迁移。

--merge

其功能是合并迁移中的冲突问题。

--name NAME, -n NAME

其功能是按照Python标识符定义要求,自定义迁移文件名称。

--no-header

其功能是生成没有Django版本信息和时间戳的迁移文件。

--check

其功能是检测模型已经变换而迁移文件中没有检测到的状态信息。

8. migrate

原型:django-admin migrate [app_label] [migration_name]

使用说明:根据模型与迁移文件信息同步数据库。

该方法包含如下常用参数。

--database DATABASE

其功能是规定需要同步的数据库,默认情况下同步迁移文件信息到default中设置的数据库。

--plan

其功能是显示可被执行的迁移文件中的指令。

--noinput, --no-input

其功能是屏蔽各种提示信息。

--check

用于检测迁移文件是否正常同步,如果不同步则退出迁移行为(Django 3.1新增功能)。

9. showmigrations

原型:django-admin showmigrations [app_label [app_label ...]]

使用说明:查看工程中已经存在数据库同步脚本。

该方法包含如下常用参数。

--list, -l

其功能是显示工程下所有App下的同步脚本,即使App没有同步脚本也会被显示,只是在App下显示“no migrations”。

--plan, -p

其功能是显示Django将要执行的同步计划,已经应用的将标识为[X]。

--database DATABASE

其功能是规定需要检测的数据库,默认情况下检测default设置的数据库。

--v, --verbosity

其功能是规定输出结果的复杂程度,可取值0或(1,2,3),其中0表示最小输出,1表示正常输出,2表示冗余输出,3表示非常冗余输出。

10. sqlflush

原型:django-admin sqlflush

使用说明:查看生成清空数据库的脚本。

该方法包含如下常用参数。

--database DATABASE

其功能是规定需要输出SQL语句的数据库,默认情况下输出default设置的数据库。

11. sqlmigrate

原型:django-admin sqlmigrate app_label migration_name

使用说明:查看指定名称的数据库同步SQL语句。

该方法包含如下常用参数。

--backwards

该参数不用于生成同步语句,默认情况下SQL将创建并被生成同步文件。

--database DATABASE

其功能是规定需要生成SQL语句的数据库,默认情况下生成default设置的数据库。

12. sqlsequencereset

原型:django-admin sqlsequencereset app_label [app_label ...]

使用说明:生成指定应用相关的表中使用序列所对应的脚本。

此指令用于防止自增字段造成的序列溢出问题。

该方法包含如下常用参数。

--database DATABASE

其功能是规定需要生成序列的SQL语句的数据库,默认情况下使用default设置的数据库。

13. squashmigrations

原型:django-admin squashmigrations app_label [start_migration_name] migration_name

使用说明:生成合并后的迁移文件,将应用下的多个迁移脚本文件合并为可能的少数几个,合并前的迁移文件与合并后的迁移文件可共存。

该方法包含如下常用参数。

--no-optimize

在执行合并操作时不做优化处理,默认情况下,Django框架试图优化迁移中的操作,以减少生成文件大小,这种情况只有在创建不正确的迁移文件时使用。

--noinput, --no-input

其功能是停止所有用户提示信息。

--squashed-name SQUASHED_NAME

其功能是设置合并迁移文件名称,默认情况下,合并文件以第一个合并的迁移文件与最后一个迁移文件名称中间以_squashed_形式连接。

--no-header

其功能是使生成的合并迁移文件中没有Django版本信息与时间戳标头。

3.3.2 环境配置命令

框架命令中有不少命令与Django工程运行环境有关,具体如下。

1. compilemessages

原型:django-admin compilemessages

使用说明:编译.po语言文件(该文件通过makemessages方法生成),用于国际化语言支持。

该方法包含如下常用参数,这些参数在使用时都在一个命令中使用多次。

--locale LOCALE, -l LOCALE

该参数用于指定编译哪些语言文件。该参数如果不指定,则编译所有语言文件。

--exclude EXCLUDE, -x EXCLUDE

该参数用于指定剔除编译哪些语言文件。

--ignore PATTERN, -i PATTERN

该参数用于忽略对指定文件夹扫描编译,这种忽略是以通配符方式进行的。

2. makemessages

原型:django-admin makemessages

使用说明:在工程文件所有文件中排查并抽取需要翻译的信息。在工程中创建locale文件夹并创建对应的信息文件。在修改完成信息文件后,需要通过compilemessages命令完成编译,使相关信息能够用于国际化显示需要。

该方法包含如下常用参数。

--all, -a

该参数为所有可用语言更新信息文件。

--extension EXTENSIONS, -e EXTENSIONS

该参数规定需要重新检测的文件类型,默认情况下检测html、txt、py与js文件。

--locale LOCALE, -l LOCALE

该参数规定处理的语言类型。

--exclude EXCLUDE, -x EXCLUDE

该参数剔除处理的语言类型。

--ignore PATTERN, -i PATTERN

该参数以通配符的方式忽略排查的文件或目录,默认情况下忽略以下信息:CVS、.*、*~、*.pyc。

3. startapp

原型:django-admin startapp name [directory]

使用说明:创建一个App。

在当前目录或指定位置,根据一个指定的应用名称来创建一个Django应用的目录框架。

默认情况下,新的目录下包含了一个models.py文件与其他应用的模板文件。如果在执行该命令时只设置了应用名称,而没有设置目录名称,应用的目录结构将在当前工作目录下创建。

使用该命令时如果需要设置目录,首先需要确保目录已被创建。可以通过设置“.”来指定当前工作目录。

该方法包含如下常用参数。

--template TEMPLATE

该参数提供了一个包含自定义应用模板文件的路径,或者指定一个包含一个非解压的文件(类似.tar格式)或压缩文件(.tar.gz、.tar.bz2、.tar.xz、.tar.lzma、.tgz、.tbz2、.txz、.tlz、.zip)的路径。

--extension EXTENSIONS, -e EXTENSIONS

该参数规定了应用模板中使用的模板扩展名,默认情况下模板扩展为py。

--name FILES, -n FILES

该参数规定使用的模板文件名称,默认为空的列表。

4. startproject

原型:django-admin startproject name [directory]

使用说明:在当前目录或给定的地址按照指定的项目名称创建Django工程目录框架。

默认情况下,目录下包含manage.py与项目包(包含一个配置文件及其他文件)。

如果在执行该命令时只设置了项目名称,工程名称与项目包名称将都以指定的项目名称在当前目录下创建。

如果设置了指定的地址,需要事先创建相应的地址目录,可以通过设置“.”来表明指向当前工作路径。

该方法包含如下常用参数。

--template TEMPLATE

该参数规定自定义项目模板的路径、文件路径或url。

--extension EXTENSIONS, -e EXTENSIONS

该参数规定项目模板的扩展文件名称,默认情况下文件扩展名称为py。

--name FILES, -n FILES

该参数规定使用的模板文件名称,默认为空的列表。

3.3.3 开发调试命令

框架命令中有不少命令与Django工程开发调试有关,具体如下。

1. check

原型:django-admin check [app_label [app_label ...]]

用途:检查整体Django工程是否存在潜在问题,项目所需关联文件是否完整。默认情况下,检查工程下的所有应用。

参数:该命令具有很多参数,其中一些常用参数情况如下。

--tag TAGS, -t TAGS

使用框架检测机制内置的检测类型,检测类型如下:

  • admin:用于检测如何管理模块站点的声明情况。
  • caches:用于检测相关缓存配置情况。
  • compatibility:用于检测版本升级带来的潜在影响。
  • database:用于检测数据库关联问题。由于应侧重于代码分析而不是规则检测,所以默认情况下该项检测不会执行。另外,当执行migrate操作时,该项检测将同步执行。
  • models:用于检测模型相关信息,确认模型定义、模型中包含字段以及元数据信息是否合规。
  • security:用于检测配置文件中相关信息安全性。
  • signals:用于检测信号调度程序的声明及注册情况。
  • staticfiles:用于检测静态文件配置信息。
  • templates:用于检测模板配置信息。
  • translation:用于检测配置的翻译信息。
  • urls:用于检测url配置信息。

如果需要确定哪些tag可用,可使用以下参数。

--list-tags

如果需要显示一些在开发模式下的检测信息,可使用以下参数。

--deploy

如果需要指定数据库进行检测,可使用以下参数(Django 3.1新增功能)。

--database DATABASE

2. diffsettings

原型:django-admin diffsettings

使用说明:显示当前工程的配置文件与默认Django配置文件的差异。

该方法包含如下常用参数。

--all

该参数显示所有Django框架下的配置信息,对于Django默认配置文件不存在的节点,以“###”开头。

--output {hash,unified}

该参数规定显示输出的内容,可用参数包含hash与unified两种模式。hash为默认显示模式,unified模式将默认设置信息以减号符号标记,对于有修改的配置以加号符号标记。

3. runserver

原型:django-admin runserver [addrport]

使用说明:在本地电脑上启动一个轻量级的Web服务,默认情况下这个Web服务使用8000端口并采用127.0.0.1的IP地址。在实际使用时可根据需要设置具体的IP地址和端口。

该服务使用了通过WSGI_APPLICATION配置参数设置的WSGI应用。由于缺乏安全考虑,这种命令不适用于生产环境。

在启动服务后,如果不存在文件的增加或删除,只是修改文件内容,则服务自动重载修改后的代码,不需要重启服务。每次修改后,Django的检测框架都会为整个项目检测一些通用的错误。

该方法包含如下常用参数。

--noreload

该参数禁用自动重载机制,这就意味着当代码修改后,需要重启服务才能生效。

--nothreading

该参数禁用多线程机制,默认情况下该命令采用多线程模式,可以同时打开多个不同端口或地址的服务。

--ipv6, -6

该参数采用IPV6地址模式,默认情况下IP地址为127.0.0.1,采用IPV6模式默认地址为::1。

4. shell

原型:django-admin shell

使用说明:进入django shell,默认情况下,Django会根据需要选择安装的IPython或bpython作为壳命令的解释器,如果两种模式都安装了,则需要用户选择一种模式作为解释器。

该方法包含如下常用参数。

--nostartup

该参数禁止为Python解释器读取启动脚本,默认情况下,该脚本通过环境变量PYTHONSTARTUP来设置。

--command COMMAND, -c COMMAND

该参数按照Django框架来执行某个以字符串形式出现的脚本。

5. sendtestemail

原型:django-admin sendtestemail [email [email ...]]

使用说明:发送测试邮件到指定接收方。

该方法包含如下常用参数。

--managers

该参数使用框架提供的mail_managers方法发送邮件到MANAGERS配置参数设置的email地址。

--admins

该参数使用框架提供的mail_admins方法发送邮件到ADMINS配置参数设置的email地址。

6. test

原型:django-admin test [test_label [test_label ...]]

使用说明:测试Django工程。

该方法包含如下常用参数。

--failfast

其功能是当测试失败后立即停止错误并报告错误。

--testrunner TESTRUNNER

默认的测试运行控制类为DiscoverRunner。设置运行测试的控制运行类,这个类默认来源于配置文件中TEST_RUNNER节点值。

--noinput, --no-input

该参数可控制用户输出。

--keepdb

该参数可在测试运行期间保留测试数据库信息。这有助于极大地降低测试时间。如果测试数据库不存在,它将会在第一次运行测试时创建并在后续测试中保存。除非配置文件中MIGRATE的测试参数设置为False,否则任何迁移文件内容都将在测试数据库中体现。

--reverse, -r

该参数按照相反的执行顺序执行测试用例,这有助于测试测试用例的依赖关系。

--debug-mode

该参数按照debug模式进行测试,这种设置有助于测试中发生错误时的信息提示。

--debug-sql, -d

该参数用于设置当测试发生错误时生成相应的SQL日志。

--parallel [N]

该参数用于设置测试的并行处理进程。电脑处理器具有多个内核,使用该参数可以使测试明显变快。

--buffer,-b

该参数用于丢弃通过测试的输出信息(Django 3.1新增功能)。

7. testserver

原型:django-admin testserver [fixture [fixture ...]]

使用说明:使用给定的数据运行Django开发服务器。

这种模式首先会创建测试数据库,并按照给定的数据集填充测试数据库。这种Web服务不会自动检测Python代码的变动,但会检测相应文件变动。

该方法包含如下常用参数。

--addrport ADDRPORT

该参数规定不同的端口地址用于测试。