solovyov.net

Реиспользование приложений

· · python, django

Есть в Джанге такая сущность, как приложение - какой-то кусок функционала. На мой взгляд, то, что Джанга заставляет юзера делить свой проект на такие кусочки - это один из ее самых толстых плюсов (наряду с отличной документацией). Она идет даже дальше того - предоставляет несколько уже готовых, отлично сделанных приложений. Для аутентификации, для комментариев и т.п. - это достаточно известный факт, чтоб не останавливаться на нем дольше.

Но есть один момент, который меня немного напрягает - вот не позаботились разработчики о достаточной расширяемости приложения аутентификации, и у нас сразу куча проблем: все завязываются на это приложение (ну удобно же, почему бы и не использовать?), а при необходимости получить что-то большее в своем проекте - приходится либо перерисовывать auth один в один и править везде импорты, либо какими-то хаками его расширять - изворачиваться. Хуже всего, когда понимание того, что auth ну точно не хватает приходит посреди процесса, когда уже куча функционала написана.

И вот если представить такого себе сферического пони в вакууме без проблем обратной совместимости - каким будет лучший путь решения проблемы?

Я пока вижу только два:

  • точечный - как-то внимательно спроектировать auth так, чтоб он был таки расширяемым; при этом, если возникает проблема с другим стандартным приложением, вся история начинается сначала;
  • применить магию по типу той, что была в Джанге сначала, когда можно было импортировать приложения как django.apps.appname - тоже вроде как не зря они от нее отказались же.

Есть какие-нибудь разумные мысли?