首页 > 解决方案 > 如何摆脱 django 中的 configparser.NoOptionError

问题描述

DEBUG = eval(ctx.get(CONFIGSECTION, 'DEBUG'))

# MDM Revert before prod!
# DEBUG=True

TEMPLATE_DEBUG = DEBUG

REDIS_SERVER = ctx.get(CONFIGSECTION, 'REDIS_SERVER')
REDIS_DB = ctx.get(CONFIGSECTION, 'REDIS_DB')

我得到以下错误

raise NoOptionError(option, section)
configparser.NoOptionError: No option 'debug' in section: 'DEFAULT'

标签: pythonpython-3.xconfigparser

解决方案


请从 RawConfigParser 派生一个新的配置解析器类,仅添加新的特殊行为,如下所示:请阅读此文档: https ://docs.python.org/3/library/configparser.html

from ConfigParser import RawConfigParser, NoOptionError
from StringIO import StringIO
from collections import defaultdict

class MyConfigParser(RawConfigParser):
    def get(self, section, option):
        try:
            return RawConfigParser.get(self, section, option)
        except NoOptionError:
            return None

settings=StringIO('''
[Set]
ip=192.0.2.76
verify=yes
[Set2]
ip=192.0.2.74
''')

cfg=MyConfigParser(allow_no_value=True)
cfg.readfp(settings)

assert cfg.get('Set', 'verify') ==  'yes'
assert cfg.get('Set2', 'verify') == None

推荐阅读