我正在开发一个Django库,这是Pypi上发布的一个可插件。此插件中的某些设置应由用户自定义,只需在<button onclick="newshow()">New Show!</button><br>
<div id="show"></div>
中设置值即可。目前我使用这个逻辑:
settings.py
在我的图书馆,当我需要获取设定值时,我会这样做:
# config.py
import django.conf
class DefaultValues(object):
SETTING_1 = []
SETTING_2 = 42
class SettingsWrapper(object):
def __getattr__(self, item):
result = getattr(django.conf.settings, item, None)
if result:
return result
return getattr(DefaultValues, item)
settings = SettingsWrapper()
它工作正常,但我觉得我重新发明轮子。这里的目标是首先从from mylib.config import settings
[...]
settings.SETTING_1
模块(用户设置)获取值,如果未定义该值,则从django.conf.settings
类中检索它。
最近,在深入研究Django代码时,我发现了DefaultValues
模块,其中包含django.conf
,LazySettings
和BaseSettings
类。特别是Settings
的文档说:
设置的通用逻辑,无论是由模块还是由用户设置。
我的问题是:我可以将模块BaseSettings
转换为使用Django类并执行相同的工作(可能更好)吗?