我有什么:
from django.conf import settings
instance = SomeClassInstantiatedWithADict(**settings.to_dict())
我喜欢什么(使用Django 1.11):
from django.conf import settings
instance = SomeClassInstantiatedWithADict(**settings.__dict__)
我试过了:
__dict__
是接近的,但是List<String> list1 = new ArrayList<>();
List<String> list2 = Files.lines(Paths.get(fname)).flatMap(s -> {
String[] line = s.split("\\t");
if (line.length > 0) {
list1.add(line[0]);
}
return Arrays.stream(line).skip(1);
}).collect(Collectors.toList());
只获得了一小部分设置,我认为这些设置是硬编码的,而不是添加的属性。谢谢你的帮助!
答案 0 :(得分:3)
使用以下代码:
from django.conf import settings
instance = settings.__dict__['_wrapped'].__dict__
然后,您将instance
中的所有设置字典作为字典。
答案 1 :(得分:1)
您确定您确实需要所有设置吗?
为什么不使用小帮手,则传入您需要的所有设置和默认值。像这样,即使您未配置设置,也总是可以得到实际需要的设置。
def build_settings_dict(attrs=[{'name': 'DEBUG', 'default': False},]):
settings_dict = {}
for attr in attrs:
logger.info(attr)
try:
s = getattr(settings, attr['name'], attr['default'])
except Exception as e:
logger.warning("Error: %s", e)
else:
settings_dict[attr['name']] = s
return settings_dict
default_settings = build_settings_dict([
{'name': 'DEBUG', 'default': True},
{'name': 'USE_I18N', 'default': True},
{'name': 'USE_L10N', 'default': False},
])
答案 2 :(得分:0)
这会将整个设置对象转换为字典:
In [12]: settings_dict = {}
In [13]: for st in dir(settings):
...: if st.startswith('_'):
...: continue
...: settings_dict[st] = getattr(settings, st)
...:
...:
In [14]: settings_dict
这非常详尽,它包含所有可能的设置属性。
dir()
是一个内置的Python。阅读它here
答案 3 :(得分:0)
检查shell中的settings.__dict__['_wrapped'].__dict__
。似乎里面有一切。但是不确定它是否是正确的访问方式。
答案 4 :(得分:-1)
>>> from django.conf import settings
>>> settings_dict = vars(settings._wrapped)
>>> print(settings_dict)
{'ABSOLUTE_URL_OVERRIDES': {}, 'ADMINS': [], 'ALLOWED_HOSTS': ['127.0.0.1', 'localhost', 'www.tetricoins.com', 'api.tetricoins.com'], 'APPEND_SLASH': True, ...