Django使用django-admin startproject [projectname]命令生成project。 django-admin命令行的路径为:django/bin/django-admin.py 以django-admin startproject mysite为例,这将会在当前目录下生成一个mysite目录,目录结构如下:
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
在project中与manage.py相同的目录下使用python manage.py startapp [appname]命令生成app。 以python manage.py startapp polls为例,这将创建一个目录polls,目录结构如下:
polls/
__init__.py
admin.py
migrations/
__init__.py
models.py
tests.py
views.py
django-admin.py源码:
#!/usr/bin/env python
from django.core import management
if __name__ == "__main__":
management.execute_from_command_line()
manage.py源码:
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
它们都用到了django.core.management这个模块的execute_from_command_line方法。 主要的区别是manage.py比django-admin.py多了一行: os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") 用来设置DJANGO_SETTINGS_MODULE这个环境变量为当前项目的settings文件。
通过execute_from_command_line()方法,可以看到Django命令主要是通过 django.core.management.ManagementUtility类的入口execute()执行。
命令执行过程如下:
在django/core/management/commands可以查看所以的系统命令。
startproject.py和startapp.py都是调用django.core.management.templates.TemplateCommand类的handle()方法进行处理。 两者主要的区别是:template_dir不同
(adsbygoogle = window.adsbygoogle || []).push({});
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有