2013-04-21 2 views
3

Я пишу многоразовое приложение Django. Каковы наилучшие методы для добавления собственных настроек в settings.py? Нужно ли префикс каждой настройки с моим именем app_name, или, может быть, я должен сделать только один параметр dict. для моего приложения?Настройки пространства имен в Django

ответ

3

Вы должны попытаться определить настройки приложения только в соответствующем пакете, особенно если вы рассматриваете пакет многоразового использования. Всегда придерживаться уникальных глобальных имен (какие настройки являются актуальными) всегда хорошая идея. Посмотрите на PEP-8 globals.

Если вы создаете повторно используемый пакет, попробуйте сначала импортировать атрибут из модуля настроек, чтобы убедиться, что пользователь переопределяет его своей константой.

E.g.

from django.conf import settings 

MY_CONSTANT = getattr(settings, 'MY_CONSTANT', True) 

def foo(*args, **kwargs): 
    if MY_CONSTANT: 
     return 'hello' 
    else: 
     return 'goodbye' 

Таким образом, пользователь может установить MY_CONSTANT = False в его модуле настройки, так что приложение будет возвращать 'goodbye' вместо стандартного 'hello'

Большинство пакетов делают использовать имя пакета в качестве префикса, как вы предложили, вот несколько примеры:

FEINCMS, tastypie