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
    
    
  • 相关阅读:
    Qt中实现启动画面(延时过程中要加上app.processEvents())
    Qt5中生成和使用静态库
    360云后台(使用HTTP Cache服务器)
    lucene 从2.4.0—3.6.0—4.3.1版本升级
    从C++到Qt(命令行编译,讲解原理)
    赵伟国的逻辑
    windows 7 系统进程服务详解
    QT 4.87 changes
    海量小文件存储
    最大连续子序列乘积
  • 原文地址:https://www.cnblogs.com/aomi/p/7992002.html
Copyright © 2011-2022 走看看