Python入门教程(一)manage.py和django-admin.py的区别

来源:互联网 发布:贷款软件 编辑:程序博客网 时间:2024/09/21 06:37

开始使用python生成django的项目,使用django-admin.py生成web项目,在web项目中有manage.py脚本。本文目的是区分manage.pydjango-admin.py

一、命令对比

执行django-admin.pymanage.py,如下所示。
1. 其中[django]是app(在SCM项目中使用过),下面check等指令是management下的command命令。
2. manage.py多了[auth]、[contenttypes]、[sessions]、[staticfiles]

(env) tutorial$ django-admin.pyType 'django-admin.py help <subcommand>' for help on a specific subcommand.Available subcommands:[django]    check    compilemessages    createcachetable    dbshell    diffsettings    dumpdata    flush    inspectdb    loaddata    makemessages    makemigrations    migrate    runserver    sendtestemail    shell    showmigrations    sqlflush    sqlmigrate    sqlsequencereset    squashmigrations    startapp    startproject    test    testserver

对比

(env) tutorial$ python manage.pyType 'manage.py help <subcommand>' for help on a specific subcommand.Available subcommands:[auth]    changepassword    createsuperuser[contenttypes]    remove_stale_contenttypes[django]    check    compilemessages    createcachetable    dbshell    diffsettings    dumpdata    flush    inspectdb    loaddata    makemessages    makemigrations    migrate    sendtestemail    shell    showmigrations    sqlflush    sqlmigrate    sqlsequencereset    squashmigrations    startapp    startproject    test    testserver[sessions]    clearsessions[staticfiles]    collectstatic    findstatic    runserver

二、源码对比

两个地址
django-admin.py

from django.core import managementif __name__ == "__main__":    management.execute_from_command_line()

manage.py

import osimport sysif __name__ == "__main__":    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "tutorial.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)

三、execute_from_command_line分析
函数在django.core.management__init__.py

def execute_from_command_line(argv=None):    """    A simple method that runs a ManagementUtility.    """    utility = ManagementUtility(argv)    utility.execute()