|
DRF. Бизнес логика
|
|||
---|---|---|---|
#18+
Коллеги, новичек в Django Rest Framework. Да и вообще в python Есть ViewSet Код: python 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Что не нравится. 1. Из request дергаются атрибуты создаваемого док-та. Ладно. Между получением атрибутов и Doc.create хотелось бы воткнуть валидатор. Валидировать прямо в методе не красиво. Ну допустим: Код: python 1. 2. 3. 4. 5.
В каком-то другом методе будет другой валидатор. Возникает куча зависимостей от валидаторов. 2. Из ViewSet напрямую дергаю метод модели. В параметрах nameTypeDoc,nameContact. Получается в модель Doc нужно закинуть зависимости TypeDoc и Contact Код: python 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
Ваще не здорово! 3. Код: python 1.
Для этого метода пусть будет сериализатор по умолчанию. Для другого нужен другой. Можно так: Код: python 1. 2. 3. 4.
Еще один пласт зависимостей. Че-то как-то жирно. Получается нужен какой-то слой бизнес-логики DocService , ктр. связывает Doc, Contact, TypeDoc. Зависимости от валидаторов и сериализаторов вроде все-таки остаются тут. Вообще хотелось бы нечто следующее: Код: python 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
В DocViewSet закинуть import DocCreator Так что-ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2017, 07:43 |
|
DRF. Бизнес логика
|
|||
---|---|---|---|
#18+
Или mixinы насобачить? Как у вас у питонистов по фешую? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2017, 07:50 |
|
DRF. Бизнес логика
|
|||
---|---|---|---|
#18+
bob1970, сразу скажу, я не пользуюсь Django REST, поэтому какой там фэншуй - не знаю, в Django фэншуй - MVC особо не углублялась, но код ваш выглядит странно, вопросы вызывает createBy метод, создается впечатление что вы не видите разницы между созданием сервиса и его использованием советую почитать про работу с классами в Питоне и про создание ДБ моделей в Django по Питону смотрите документацию, по Django документацию и djangobook ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2017, 02:00 |
|
DRF. Бизнес логика
|
|||
---|---|---|---|
#18+
mini.weblabbob1970, сразу скажу, я не пользуюсь Django REST, поэтому какой там фэншуй - не знаю, в Django фэншуй - MVC особо не углублялась, но код ваш выглядит странно, вопросы вызывает createBy метод, создается впечатление что вы не видите разницы между созданием сервиса и его использованием Я точно чего-то не догоняю. И хочу понять что именно. Хорошо. Пускай будет не Django Rest Framework. Просто Django. Допустим, вам нужно удалить какой-то набор записей (н.п. документы за период). Нужно вызвать какой-то сервис, на входе дать период. В каком месте вы бы разместили этот процесс? В модели? Или , если говорить про просто Django, то напрашивается в самом обработчике формы. Так что-ли? Т.к. в django под контроллером понимается view.py. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2017, 13:43 |
|
DRF. Бизнес логика
|
|||
---|---|---|---|
#18+
В общем, результаты поиска ответов у зарубежных и отечественных коллег. Вот боле-мене развернутый ответ Large web apps in Python: A good architecture Не view , ни model не подходят для этого дела, надо выносить в отдельный слой. Похожих мнений достаточно. На Django такое не пишут. Кроме сайтов с примитивными формами и crud она не годится. Вопрос снят. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2017, 20:49 |
|
DRF. Бизнес логика
|
|||
---|---|---|---|
#18+
bob1970, ну вообще-то, если вы пишите api и пользуетесь Django REST и у вас задача: "удалить какой-то набор записей (н.п. документы за период)" очевидно же, что вам нужно дописать в ваш api метод, т.е. нужно взять доку для Джанго Рест и посмотреть куда прикручиваются методы. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2017, 21:30 |
|
DRF. Бизнес логика
|
|||
---|---|---|---|
#18+
mini.weblab, Ты, как обычно, поняла все слишком примитивно. Объясняю: автор не нашел, где в мире Джанги место для слоя бизнес-логики. И совершенно справедливо не нашел, потому что его там нет. Модели Джанги отображают одну таблицу базы данных на питоний класс и позволяют осуществлять CRUD операции в пределах этой таблицы. Другими словами Джанго реализует паттерн Active Record, который удобен, когда данные спроектированы таким образом, что единица интересной для пользователя информации извлекается из соответствующей таблицы БД как единичная запись. На практике в проектах выходящих за рамки простого интегратора данных объекты предметной области агрегируют данные из множества таблиц и живут дольше одного акта запрос/ответ, и какая-то более-менее осмысленная структура приложения получается, когда применяются паттерны Unit of Work, Repository, Data Mapper и пр. которые формируют слой бизнес-логики. Джанга не предоставляет никаких решений для организации бизнес-логики как отдельного слоя, и если, например, возможность выполнить несколько запросов в одной транзакции ОРМ Джанги предоставляет, то о персистентности объектов предметной области надо каким-то образом заботиться самостоятельно, надо придумывать как хранить состояние этих объектов между запросами, и в итоге изобретать самописные IoC-контейнеры и прочие энтерпрайзовые плюшки. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2017, 10:16 |
|
DRF. Бизнес логика
|
|||
---|---|---|---|
#18+
это опять я, Спасибо, добрый человек! Вы все правильно поняли и объяснили. Еще раз убедили меня в назначении и применении django. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2017, 10:25 |
|
DRF. Бизнес логика
|
|||
---|---|---|---|
#18+
bob1970это опять я, Спасибо, добрый человек! Вы все правильно поняли и объяснили. Еще раз убедили меня в назначении и применении django. Да мы уже общались на эту тему в другом месте ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2017, 10:28 |
|
DRF. Бизнес логика
|
|||
---|---|---|---|
#18+
Да мы уже общались на эту тему в другом месте За наводку на pyramid, отдельный респект :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2017, 10:58 |
|
DRF. Бизнес логика
|
|||
---|---|---|---|
#18+
а я напомню, тс хотел "удалить какой-то набор записей (н.п. документы за период)" и я бы не назвала это "чем-то выходящим за рамки", с джанго с этой зачей прекрасно справляется, как и любой веб-фреймворк. я не совсем понимаю, почему вы ждете от фреймворков решения каких-то нестандартных задач. с другой стороны я конечно же соглашусь, что джанго-фреймворк предназначен для разработки веб-сайтов, и будет не лучшим выбором для разработки систем наведения ракет большой и средней дальности ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2017, 15:38 |
|
DRF. Бизнес логика
|
|||
---|---|---|---|
#18+
mini.weblabа я напомню нет, не понимаешь, ввиду отсутствия мозгов занимайся своим делом - расти детей, подметай трамвайные пути, крась ногти на ногах. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2017, 15:58 |
|
DRF. Бизнес логика
|
|||
---|---|---|---|
#18+
да я и так занимаюсь своим делом, не надо за меня переживать. чтобы использовать Джанго много мозгов совсем не нужно, достаточно знать базовые понятия веб-разработки, уметь работать с классами и БД, в частности, неплохо знать разницу между веб-страницей и веб-сервисом ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2017, 17:53 |
|
DRF. Бизнес логика
|
|||
---|---|---|---|
#18+
mini.weblabда я и так занимаюсь своим делом, не надо за меня переживать. чтобы использовать Джанго много мозгов совсем не нужно, достаточно знать базовые понятия веб-разработки, уметь работать с классами и БД, в частности, неплохо знать разницу между веб-страницей и веб-сервисом Ну вот именно поэтому твоя стезя - это ногти, трамвайные пути и джанга, архитектуру более сложной системы ты понять не в состоянии, о чем предыдущие несколько постов и говорят. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2017, 18:26 |
|
|
start [/forum/moderation_log.php?user_name=Ferrw]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
67ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 438ms |
total: | 621ms |
0 / 0 |