DEV Community

Discussion on: Настройки приложений Django

Collapse
 
flybot profile image
FlyBot

Дважды декларируются URL, USER, PASSWORDБ что есть неправильно
Правильно использовать декоратор

def apply_defaults(cls):
defaults = {
'default_value1':True,
'default_value2':True,
'default_value3':True,
}
for name, value in defaults.items():
setattr(cls, name, some_complex_init_function(value, ...))
return cls

@apply_defaults
class MyAppSettings(AppSettings):
pass

Collapse
 
gimntut profile image
Гимаев Наиль • Edited

Спасибо за замечание.


# my_app\settings.py
def apply_defaults(cls):
  defaults = {
    'default_value1':True,
    'default_value2':True,
    'default_value3':True,
  }
  for name, value in defaults.items():
    setattr(cls, name, some_complex_init_function(value, ...))
    return cls

@apply_defaults
class MyAppSettings(AppSettings):
  pass

conf = MyAppSettings('MY_APP_CONF')

К сожалению, предложенный тобой вариант не меняет ситуацию. my_app\settings.py теперь выглядит по другому, но django_project\settings.py остался прежним, а значит дублирование осталось. При этом IDE "ослепнут", т.к. имена полей будут генерироваться динамически.