Django. Структура проекта

Здесь создаются директории:

tutorial/tutorial/quickstart
tutorial/tutorial

Мне не ясно, почему такая дикая вложенность. Вроде говорится, про "правильную" архитектуру. Но в чём привильность не ясно. Плюс, не ясно, что есть quickstrat, а что есть tutorial. Можно пример из боевого проекта?


Ответы (1 шт):

Автор решения: Roman Konoval

Сначала о разнице между tutorial и quickstart. К сожалению, у джанго путаница с терминологией, точнее она неочевидная.

tutorial - это проект (project) в терминологии django. Это целостное приложение (в смысле ПО или программный продукт), т.е. его можно запустить. quickstart - это в терминологии джанго app (application), по сути это модуль, который можно повторно использовать подключая в джанго проект, application сам по себе не может быть запущен. django project - это набор django applications + конфигурация (главной частью которого является как раз список applications, которые используются в проекте).

В более менее сложном проекте, будет много django applications. Иногда бывает несколько джанго проектов, например, если есть клиент и сервер, то их имеет смысл делать отдельными проектами.

Что касается tutorial верхнего уровня, то это просто корневая папка проекта. Они будет корневой папкой в системе контроля версий. В ней будут файлы типа README, каталог docs, какие-нибудь скрипты, которые используются на CI или в развертывании, т.е. то что является частью проекта, но не есть частью django приложения.

Чтоб лучше уловить разницу: tutorial/tutorial будет пакетом верхенго уровня, который входит в PYTHONPATH при запуске приложения. А в корневой папке лежит manage.py, который совсем не нужен в runtime, когда приложение будет развертываться в боевом режиме. Т.е. в корневом каталоге не будет __init__.py и он не является пакетом доступным приложению в runtime.

→ Ссылка