我正在开发一个包含多个设置文件的项目,类似于https://medium.com/@ayarshabeer/django-best-practice-settings-file-for-multiple-environments-6d71c6966ee2。有一个settings
目录有多个设置文件:
settings
├── base.py
├── development.py
├── production.py
└── staging.py
base.py
包含Django REST框架的默认权限设置:
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticated',
],
}
在制作中,我想使用默认的JSON渲染器而不是可浏览的API。所以在production.py
我有这样的事情:
from .base import *
REST_FRAMEWORK.update({
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer'
)
})
我发现这比在每个文件中定义REST_FRAMEWORK
设置更干。问题是:这会有效吗?您可以update
settings.py
中导入的设置词典吗?
答案 0 :(得分:1)
您可以直接更新它,但不要这样做。由于字典是可变的,因此您将更新原始字典,因此您将不再对不同的文件进行不同的设置。首先使用deepcopy
:
from .base import *
from copy import deepcopy
REST_FRAMEWORK = deepcopy(REST_FRAMEWORK)
REST_FRAMEWORK.update({
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer'
)
})
我过去曾经因此而被咬过,这就是我知道的原因。 :)