django-admin和manage.py

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django-admin和manage.py相关的知识,希望对你有一定的参考价值。

有三种方式,可以执行Django提供的内置命令:

$ django-admin <command> [options]
$ manage.py <command> [options]
$ python -m django <command> [options]

其中的command是Django内置的或者自定义的命令。

有三种获取帮助信息的办法:

django-admin help:显示使用信息和命令列表。

django-admin help --commands:所有可用命令的列表。

django-admin help <command>:命令的介绍及其可用的参数列表。

django-admin version:获取当前使用的Django版本。

使用--verbosity参数指定django-admin将通知和调试信息打印到控制台。

一、Django内置命令选项

  Django提供了一系列命令选项,有一些天天都用,有一些很重要,有一些基本用不到。下面列出了一些重要的:

  调用方式:django-admin 命令选项 额外参数

  1.check

    检查整个Django项目是否存在常见问题。

    默认情况下,所有应用都将被选中。可以通过提供app的名字检查指定的应用:

django-admin check auth admin myapp

    如果没有指定任何一个应用,那么将对全部的应用进行检查。

  2.dbshell

    运行ENGINE设置中指定的数据库引擎的命令行客户端,其中USER,PASSWORD等指定连接参数。

    --database DATABASE

    指定打开某个数据库的shell。 默认为default。

  3.diffsettings

    django-admin diffsettings

    显示当前设置文件与Django的默认设置之间的差异。

  4.flush

    django-admin flush

    从数据库中删除所有数据。已应用的迁移不会被清除。只删除具体数据,不删除数据表!

    如果希望从空数据库启动并重新运行所有迁移,则应该删除并重新创建数据库,然后再运行migrate,这样会连原来的数据表都删了。

  5.makemigrations

    django-admin makemigrations [app_label [app_label ...]]

    根据检测到的模型创建新的迁移。迁移的作用,更多的是将数据库的操作,以文件的形式记录下来,方便以后检查、调用、重做等等。尤其是对于Git版本管理,它无法获知数据库是如何变化的,只能通过迁移文件中的记录来追溯和保存。

  6.migrate

    django-admin migrate [app_label] [migration_name]

    使数据库状态与当前模型集和迁移集同步。说白了,就是将对数据库的更改,主要是数据表设计的更改,在数据库中真实执行。例如,新建、修改、删除数据表,新增、修改、删除某数据表内的字段等等。

  7.runserver

    django-admin runserver [addrport]

    启用Django提供的轻量级的开发用的Web服务器。默认情况下,服务器运行在IP地址127.0.0.1的8000端口上。如果要自定义服务器端口和地址,可以显式地传递一个IP地址和端口号给它。

    在Linux中,如果以一个普通用户的身份来运行脚本,可能没有权限在低位端口上运行。低端口数(即1024以下)是预留出来给超级用户(root)的。

    这个服务器使用的WSGI application对象是在WSGI_APPLICATION中设置的。

    不要在生产环境中使用这个服务器。

    通常,每当写的代码有变化时,这个服务器会自动重启,但这不是绝对的,所以,为了不出意外,每次测试时,还是手动重启一下吧。

    当启动服务器之后,在服务器运行过程中每当你的Python代码有变更时,系统的检测框架将会检查整个项目中是否存在一些直观的错误,如果检测到了错误,这些错误信息将会输出至标准输出。

    可以同时启动多个服务器,只要它们在不同的端口上,多次执行django-admin runserver ...即可。

    注意:默认的IP为127.0.0.1,它是不可被网络中的其它主机所访问的,只能本机。要使网络上的其他计算机可以访问你的开发服务器,请使用自己的IP地址(例如192.168.2.1)或0.0.0.0或 :: (启用IPv6)。也可以使用只包含ASCII码的主机名.

    Django开发服务器,默认支持多线程,可以通过--nothreading参数关闭。

    下面是使用不同端口和地址的示例:

    端口8000在IP地址127.0.0.1:

django-admin runserver

    端口8000在IP地址1.2.3.4:

django-admin runserver 1.2.3.4:8000

    端口7000在IP地址127.0.0.1:

django-admin runserver 7000

    端口7000在IP地址1.2.3.4:

django-admin runserver 1.2.3.4:7000

    端口8000在IPv6地址::1:

django-admin runserver -6

    端口7000在IPv6地址2001:0db8:1234:5678::9:

django-admin runserver [2001:0db8:1234:5678::9]:7000

    端口8000在主机的IPv6地址localhost:

django-admin runserver -6 localhost:8000

  8.shell

    django-admin shell

    启动带有Django环境的Python交互式解释器,也就是命令行环境。默认使用基本的python交互式解释器。这个命令非常常用,是测试和开发过程中不可或缺的部分!

    --interface {ipython,bpython,python}, -i {ipython,bpython,python}

    指定要使用的shell。 默认情况下,Django将使用IPython或bpython。如果同时安装了两个,请指定想要的那个,如下所示:

    使用IPython:

django-admin shell -i ipython

    使用bpython:

django-admin shell -i bpython

  9.startapp

    django-admin startapp name [directory]

    创建新的app。

    默认情况下,会在这个新的app目录下创建一系列文件模版,比如models.py、views.py、admin.py等等。

  10.startproject

    django-admin startproject name [directory]

    新建工程。默认情况下,新目录包含manage.py脚本和项目包(包含settings.py和其他文件)。

  11.test

    django-admin test [test_label [test_label ...]]

    运行所有已安装的app的测试代码。

二、app提供的命令

  前面是Django核心提供的命令项,下面则是一些内置app,比如auth等提供的命令项。它们只在对应的app启用的时候才可用。

  下面是最重要的几个:

  1.clearsessions

    清除过期的会话。可以作为cron定期作业或直接运行。

  2.collectstatic

    仅当安装了static files application(django.contrib.staticfiles)时,此命令才可用。

    用于在线上环境,当DEBUG设置为False时,将静态文件等统一集中到一个目录下,为Web服务器提供静态文件支持。

    这是一个不起眼,但非常重要的命令!

三、共有参数

  每种命令都有自己特定的参数选项,但下面几个是所有命令都可以使用的参数:

  1.--pythonpath PYTHONPATH

    将给定的文件系统路径添加到Python的模块导入搜索路径(import search path)。

    如果未提供,django-admin将使用PYTHONPATH环境变量的值。

    用法示例:

django-admin migrate --pythonpath=/home/djangoprojects/myproject

  2.--settings SETTINGS

    指定要使用的配置文件。例如mysite.settings。如果未提供,django-admin将使用DJANGO_SETTINGS_MODULE环境变量的值。

    用法示例:

django-admin migrate --settings=mysite.settings

  3.--traceback

    当引发CommandError时,显示完整的错误栈信息。默认情况下,django-admin将显示一个简单的错误消息。

    用法示例:

django-admin migrate --traceback

  4.--verbosity {0,1,2,3}, -v

    指定向控制台打印消息的方式。

      ·0表示无输出。

      ·1表示正常输出(默认)。

      ·2表示详细输出。

      ·3表示非常详细输出。

    用法示例:

django-admin migrate --verbosity 2

  5.--no-color

    禁用彩色的输出信息。 一些命令会给它输出的内容添加色彩。例如,错误将以红色打印到控制台,SQL语句将突出显示语法。

    用法示例:

django-admin runserver --no-color

四、在代码中调用管理命令

  django.core.management.call_command(name, args, *options)

  要在代码中调用管理命令,需要使用call_command方法,它接受下面的参数:

  name

  要调用的命令的名称或命令对象。

  *args:

  该命令接受的参数列表。 例如,call_command(‘flush‘, ‘ - verbosity = 0‘)

  **options:

  传递给命名的选项。 例如,call_command(‘flush‘, verbosity = 0)

  例子:

from django.core import management
from django.core.management.commands import loaddata

management.call_command(flush, verbosity=0, interactive=False)
management.call_command(loaddata, test_data, verbosity=0)
management.call_command(loaddata.Command(), test_data, verbosity=0)

  命名参数可以通过使用以下语法之一传递:

# Similar to the command line
management.call_command(dumpdata, --natural-foreign)

# Named argument similar to the command line minus the initial dashes and
# with internal dashes replaced by underscores
management.call_command(dumpdata, natural_foreign=True)

# `use_natural_foreign_keys` is the option destination variable
management.call_command(dumpdata, use_natural_foreign_keys=True)

  有多个参数时,传递列表:

management.call_command(dumpdata, exclude=[contenttypes, auth])

  可以重定向标准输出和错误流,因为所有命令都支持stdout和stderr选项。 例如:

with open(/path/to/command_output) as f:
    management.call_command(dumpdata, stdout=f)

以上是关于django-admin和manage.py的主要内容,如果未能解决你的问题,请参考以下文章

Django学习之三:django-admin 和 项目manage.py程序

django-admin和manage.py

什么时候应该使用 django-admin.py 和 manage.py?

django-admin和manage.py

django-admin和manage.py

Django 命令行工具django-admin.py与manage.py