Django的django-admin工具详解

django-admin是Django的一个命令行管理工具,用以对Django项目执行某些命令操做。html

1. django-admin安装python

安装Django后,默认即安装了django-admin。shell

  • Linux系统

默认安装在$PATH_HOME/dist-packages/django/bin/django-admin.py
django

  • Windows系统

默认还在$PATH_HOME/Scripts/中安装了django-admin.exe和django-admin.pysession


2. 设置PATH路径加入django-admin所在位置app

  • Linux系统

export PATH=$PATH;$PATH_HOME/dist-packages/django/bin/工具

  • Windows系统
set PATH=%PATH%;$PATH_HOME/Scripts/


后续就能够直接在Shell中执行google

django-admin <command> [options]

3. django-admin.py代码分析spa

from django.core import management

if __name__ == "__main__":
    management.execute_from_command_line()

4. 常见的django-admin命令

  • diffsettings
  • startproject
  • startapp
  • runserver
  • testserver
  • shell
  • check
  • test

5. django-admin命令的通用选项
命令行

  • --pythonpath='/python/path'
  • --settings=mysite.settings
  • --traceback
  • --verbosity {0,1,2,3}或-v {0,1,2,3}
-v默认1
  • --no-color

6. 若是Django项目启用了django.contrib模块(默认启动),则django-admin还能够执行以下命令

1) django.contrib.auth的命令

  • createsuperuser
  • changepassword

2) django.contrib.contenttypes的命令

  • remove_stale_contenttypes

3) django.contrib.gis的命令

  • ogrinspect

4) django.contrib.sessions的命令

  • clearsessions

5) django.contrib.sitemaps的命令

  • ping_google

6) django.contrib.staticfiles的命令

  • collectstatic
  • findstatic

7. 在项目代码中,也能够直接调用django-admin的命令
调用语句:

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

示例:

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

management.call_command('flush', verbosity=0, interactive=False)
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)


补充:

事实上,在Django项目的代码中,manage.py文件的功能相似于django-admin,此外manage.py还:

  • 引入sys.path到Django项目
  • 设置DJANGO_SETTINGS_MODULE环境变量指向Django项目中的settings.py

manage.py源代码以下:

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mydjangolists.settings")
    try:
        from django.core.management import execute_from_command_line
    except ImportError:
        # The above import may fail for some other reason. Ensure that the
        # issue is really that Django is missing to avoid masking other
        # exceptions on Python 2.
        try:
            import django
        except ImportError:
            raise ImportError(
                "Couldn't import Django. Are you sure it's installed and "
                "available on your PYTHONPATH environment variable? Did you "
                "forget to activate a virtual environment?"
            )
        raise
    execute_from_command_line(sys.argv)

若是没有对Django进行任何设置,在执行django-admin命令时每每有警告,以下图所示:


而执行python3 manage.py则会自动应用所在项目的主模块中的settings.py,以下图所示:


所以建议使用python3 manage.py ...替代django-admin ...
事实上,以下命令是等价的:
django-admin <command> [options]
python3 manage.py <command> [options]
python3 -m django <command> [options]


参考连接:

https://docs.djangoproject.com/en/1.11/ref/django-admin/