DjangoX 入口启动脚本简析

主体

  1. if __name__ == "__main__":
  2. PROJECT_ROOT = os.path.realpath(os.path.dirname(__file__))
  3. sys.path.insert(0, os.path.join(PROJECT_ROOT, os.pardir))
  4. os.environ.setdefault("DJANGO_SETTINGS_MODULE", "demo.settings")
  5. from django.core.management import execute_from_command_line
  6. execute_from_command_line(sys.argv)

包路径

sys.path.insert(0, os.path.join(PROJECT_ROOT, os.pardir)) sys.path.insert可用于将某目录加入到python-path(Python的包搜索路径列表),这样当前项目的其他地方可以直接import被加入的目录下面的所有包。这里是将父目录加入的包搜索路径。这样就可以import xadminimport xutils

设置 Django settings位置

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "demo.settings")这个是使用Django必须做的第一步。“demo.settings” 是settings.py文件相对于工作目录的路径表示

比如我们需要在一个独立的脚本中使用Django模型,只需 加入:

os.environ["DJANGO_SETTINGS_MODULE"] = "you_pro_path.settings"

可以看出settings.py是Django项目入口的载体

启动

execute_from_command_line(sys.argv) Django项目启动命令的执行,执行到这里进程进入事件循环,等待请求


Related