Сведения о вопросе

DED

12:12, 10th August, 2020

Теги

Django    

Организация кода django-проекта, связывание приложений?

Просмотров: 365   Ответов: 3

Стало вот интересно кто как организует свои джанго проекты:

создаете несколько приложений(по одному для логических разделов аля блог, контакты, новости итд) и в каждом отдельно создаете модели и вьюхи;

храните весь код в корне проекта, разделяя логические разделы дроблением моделей и вьюх на файлы и только многоразовый код выносите в приложения;

другие варианты;?

Если плодите приложения то как организуете взаимодействие между ними(речь не о шаблонах, а о логике)?



Просто изучаю джангу на практике, реализую довольно крупный проект, и вот после месяца писанины пришол к выводу что мой подход совсем не оптимален и мешает придерживатся KISS и DRY, потому очень прошу поделитесь опытом.



  Сведения об ответе

padenie

11:44, 17th August, 2020

По-хорошему приложение в django — юниксвей в чистом виде: делает что-то одно, делает это хорошо, обладает неким внешним API для взаимодействия с другими модулями. Обычно даже в небольшом проекте насчитывается около десятка приложений. Плюсы такого подхода — значительно легче тестировать, повторно использовать код, можно сравнительно безболезненно менять имплементацию модуля, не нарушая работу всего сайта.

Антипаттерн — монолитные приложения (обычно буквально одно-два). Их, помимо прочего, тяжелее поддерживать, поскольку код выполняет множество не связанных напрямую задач (функции, отвечающие за генерацию RSS и смену аватарки пользователя, находятся рядом — в таком файле ничего не получится сделать без поллитры и ctrl-F). Это особенно актуально, когда в команду добавляется новый разработчик.

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


  Сведения об ответе

VERSUION

21:15, 6th August, 2020

У меня не большой опыт с Django, но, кажется, именно такой метод дробления и используется — отдельные приложения под каждую задачу.
А насчет взаимодействия — так на то и есть в питоне очень гибкая система импортов, не?


  Сведения об ответе

nYU

04:16, 23rd August, 2020

У меня большое и старое приложение на Django. Используется баланс между двумя этими подходами: большая часть функциональности в одном большом приложении, разбита в пакетах по модулям, типа:
— big_app
— models
— profile.py
— content.py
— events.py
— forum.py
— views
— forum.py
— event.py

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться