Django. Структура проекта
Здесь создаются директории:
tutorial/tutorial/quickstart
tutorial/tutorial
Мне не ясно, почему такая дикая вложенность. Вроде говорится, про "правильную" архитектуру. Но в чём привильность не ясно. Плюс, не ясно, что есть quickstrat, а что есть tutorial. Можно пример из боевого проекта?
Ответы (1 шт):
Сначала о разнице между 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.