Зачем нужны приложения?

Я вот никак не могу въехать зачем вообще в django введено разделение проекта на приложения? Т.е. там же сначала делается startproject, а потом в нем уже еще и startapp. И как понять так сказать где кончается одно приложение и начинается другое? А то я кажется все в одном делаю сейчас.

upd. Еще раз, если я правильно понял оптимальной будет такая структура проекта:

ca52d5d8fac8499c86a6283d12716211.png
  • Вопрос задан
  • 2142 просмотра
Решения вопроса 1
sim3x
@sim3x
А что с главной страницей?
создай апп с названием core || common || main || etc и сделай там вью со своей главной

Т.е. сама основа на которой хедер, футер и в нее уже контент этих приложений вставляется.
основа верстки ложится в темплейт, основа контекста, может ложится в core

Ее что отдельным приложением сделать?
если какая-то часть задачи сильно отличается от дргуих - ее можно вынести в апп

В общем случае, нужно стараться делать такие аппы, которые можно поместить в пакет и переиспользовать в другом проекте, но не проблема, если так не получается
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Проект - это твой сайт, mysite.ru. В котором настраиваются настройки в файле settings.py, урлы в urls.py.
Приложения - это часть логики сайта, к примеру: articles - где предположим хранится всё что относится к статьям на твоём сайте, шаблонов в папке templates, описания модели в файле models.py, и вывода представления в views.py.
И количество application в твоём проекте может быть очень много, к примеру корзины магазина, профиля пользователя, новостей, и тд. Что в своё очередь даёт возможность переносить application из проекта в проект.
Ответ написан
@newpy
web-dev
Попробую привести немного по-другому пример: проект - это сайт, а приложения части сайта, тематически и главное логически разделенные. Например на сайте ведется блог, это приложение пусть называется "блог". На сайте есть гостевая книга - это другое приложение (по логике вещей гостевая книга же не относится к блогу, ведь так? Там будут свои урлы, шаблоны, свои модели, вью, методы и тд. для работы именно с гостевой). Есть магазин - это приложение "магазин" которое тоже в общем-то не имеет отношения к блогу. А вот статьи от блога, это скорее модель приложения "блог", чем отдельное приложение. Ведь статьи напрямую относятся к блогу, и никак не к гостевой книге или магазину, там же не пишутся статьи. Получить доступ из одного приложения к другому можно, НО. Не стоит делать приложения связанными.
Идея в том чтобы ты мог взять свое приложение "блог", и использовать его в любом другом своем проекте Сделать startproject, скопировать туда приложение blog, и должно работать. Условно ничего не переписывая "as is" (как есть). В одном проекте несколько приложений в общем никак не взаимодействуют. Для Блога будет URL ведущий и работающий с блогом, для Магазина так же, и для Гостевой. Главная страница может храниться в приложении Landing например или main. Еще на сайте/проекте может быть реализовано API это совершенно другая логика, поэтому это тоже отдельное приложение. Для понимания задай себе вопрос, например из мной приведенных примеров Products|Продукты это что и к чему из вышеописанного относится? Попробуй привести пример что еще на проекте/сайте можно выделить в приложение отдельное.

UPD.
a97cba340f664f4ea0b52974dbb0a6b0.png
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы