Django 1.7 AppConfig против MyModelAppConfig

Мы просто внедряем Django AppConfig в новый проект 1.7 и задаемся вопросом, как правильно назвать это «Python»/«Django»?

Лучше ли явно назвать это:

class MyModelConfig(AppConfig):
    ...

Или есть веская причина, по которой его нельзя назвать?:

class AppConfig(AppConfig):
    ...

Это аккуратнее, но может быть не так.

Есть ли неочевидная причина не сделать это вторым способом?

Именование в документации использует первый способ в примерах, но есть ли веская причина? https://docs.djangoproject.com/en/1.7/ref/applications/


person Williams    schedule 17.02.2015    source источник


Ответы (1)


Часто скрывать имена — плохая идея. Если вы определите новый класс AppConfig таким образом, вы больше не сможете получить доступ к старому базовому классу AppConfig. Другие подходы, например:

from django.apps import AppConfig as BaseAppConfig

class AppConfig(BaseAppConfig):

Or:

from django import apps

class AppConfig(apps.AppConfig):

Теперь это считается хорошим дизайном в целом, и в этом случае даже не нужно, поскольку вы обычно используете только один AppConfig для каждого приложения. Тем не менее всегда полезно сделать хорошие шаблоны проектирования привычкой, а не исключением, когда они ломаются. Могут даже быть крайние случаи, когда вам нужно несколько конфигураций приложений для разных ситуаций.

person knbk    schedule 17.02.2015