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
    
    
  • 相关阅读:
    IGV解读
    box-cox解读
    linux命令eval的用法
    R中导入excel乱码的解决办法
    Django下实现HelloWorld
    python的list求和与求积
    win10下安装Django
    python下实现汉诺塔
    (stm32f103学习总结)—DS18B20
    (stm32f103学习总结)—GPIO结构
  • 原文地址:https://www.cnblogs.com/aomi/p/7992002.html
Copyright © 2011-2022 走看看