在Django世界中导入settings.py
末尾的本地环境设置覆盖文件似乎相对正常,如:
from settings_local.py import *
这有几个问题,最明显的是因为我无法检查或修改基本设置,只能覆盖它们 - 这会导致一些痛苦的重复和长时间的头痛。
相反,从本地文件导入init函数并注入globals()
的输出以允许该本地文件更智能地读取和修改设置是否有任何问题?
settings.py:
from settings_local.py import init
init( globals() )
settings_local.py:
def init( config ):
config['INSTALLED_APPS'].append( 'some.app' )
这似乎解决了与使用import *
相关的一些问题,但我想知道这是一个坏主意,原因我还不知道。
答案 0 :(得分:0)
处理此问题的更常见和可读的方法是拥有多个设置文件,您可以将所有常用设置放在一个模块中,然后将其导入特定于环境的设置文件的开头:
settings
__init__.py
base.py
development.py
staging.py
production.py
这允许您引用的突变:
# base.py
INSTALLED_APPS = [
'foo',
'bar'
]
# development.py
from .base import *
INSTALLED_APPS += [
'debug_toolbar'
]
然后,您使用DJANGO_SETTINGS_MODULE=settings.development