zoukankan      html  css  js  c++  java
  • django学习随笔:ManagementUtility

    ManagementUtility类,位于django.core.management目录下的__init__.py文件。

    这个类,在其init中:
    def __init__(self, argv=None):
    self.argv = argv or sys.argv[:]
      #各个参数
    self.prog_name = os.path.basename(self.argv[0])
      #这里是去除路径
    self.settings_exception = None

    然后就是main_help_text,fetch_command,autocomplete,execute四个函数。

    下面,仔细分析一下 execute这个函数:
    try:
    subcommand = self.argv[1]
    except IndexError:
    subcommand = 'help' # Display help if no arguments were given.
    注释写的很明白,如果没有参数,那就把help作为参数赋值进去。

    # Preprocess options to extract --settings and --pythonpath.
    # These options could affect the commands that are available, so they
    # must be processed early.
    后续,需要对诸如--settings和--pythonpath等参数进行抽取,预处理。因为这些的设置会影响其他参数的运行。
    parser = CommandParser(None, usage="%(prog)s subcommand [options] [args]", add_help=False)
    这里,又调用了CommandParser类(后续分析)。

    parser.add_argument('--settings')
    parser.add_argument('--pythonpath')
    parser.add_argument('args', nargs='*') # catch-all
    try:
    options, args = parser.parse_known_args(self.argv[2:])
    handle_default_options(options)
    except CommandError:
    pass # Ignore any option errors at this point.

    这里,在分析透彻CommandParser后,可以更好的理解。

    try:
    settings.INSTALLED_APPS
      #这里的settings = LazySettings(),在conf/__init__.py定义的。
      #而LazySettings是一个类,继承自:LazyObject,后续分析。

    except ImproperlyConfigured as exc:
    self.settings_exception = exc
    
    
  • 相关阅读:
    详解Winform多线程编程基本原理
    asp.net 文件夹和文件的创建、删除
    sql server 查询表名,存储过程,列名等
    随机输出数组中的一个数
    C# 获取Access数据库中所有表名及其列名、列类型
    Oracle 数据库小记
    Oracle11g、PLSQL、Winfrom环境搭建
    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
    Android开发中用到的框架、库介绍
    Android数据存储
  • 原文地址:https://www.cnblogs.com/aomi/p/7992002.html
Copyright © 2011-2022 走看看