Задать вопрос
Bakotiinii
@Bakotiinii

Где в Django хранить бизнес логику системы?

Во многих PHP/Java/.Net фреймворках есть такой объект, как сервис - он позволяет подтягивать модели и производить с ними какую-то бизнес-обработку. И фактически весь код - это вьюха - прослойка из сервисов (сами сервисы дергают CRUD логику моделей) - вьюха.

В Django у нас есть логика на уровне Моделей, Логика в Контроллерах, Логика в командах (какого-то объекта типа сервисов тут нет). И единственное очевидно решение - это разбивать приложение на кучку маленьких app и использовать приложения, как недилимые единицы с логикой.

Правильно ли я понимаю, что это наиболее эффективный способ организации кода?

P.s. я уже смотрел вопрос - Логика в моделях или во вью в Django?
  • Вопрос задан
  • 2199 просмотров
Подписаться 2 Простой 1 комментарий
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
Во-первых, best practice для Django - это fat models / thin controllers. Во-вторых, ничто не мешает вам сформировать сервисный слой, отделив прикладную логику в отдельные модули, независимые от фреймворка.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@dimuska139
Backend developer
Не надо fat models, делай сервисный слой. Эта либа пригодится. Правда при ее использовании твоя бизнес-логика все равно будет зависеть от Django, но все равно удобно))
Ответ написан
Комментировать
@asd111
Делаю как в других фреймворка. Логика в файлах service, в моделях только модель, во вьюхах дергаю только сервисы или привязку сервиса к шаблону.
На мой взгляд это самый каноничный подход, т.к. не важно какой у тебя фреймворк и язык - архитектура одинаковая и это удобно.
В Джанго ещё некоторые любят писать логику в class based views и потом мучаются т.к. не могут проследить логику и последовательность выполнения кода. Даже авторы Джанго когда использовали class based views наделали кучу дыр в безопасности, т.к. логика в этих файлах описывается непоследовательно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы