Урок 84 из 84 · Django
Структура проекта
Мы активировали виртуальное окружение и установили Django.
Теперь поговорим о том, что мы собираемся построить
Мы построим онлайн-блог, в котором можно будет создавать посты привязывать к ним тэги. Редактировать и удалять их.
Первое, что мы должны сделать - это создать структуру проекта. Джанго имеет очень удобный оператор django-admin , который создас для нас некий "скелет" нашего проекта.
Обратимся к нему и создадим наш проект:
$ django-admin startproject blog
Джанго создаст каталог blog, в которой будет находиться папка с таким же названием. Это стандартная архитектура расположения файлов в Джанго. Внешнюю папку blog можно считать контейнером всего нашего будущего проекта. Если ты все сделал правильно, ты должен получить следующий результат:
django-project
└───myvenv
└───blog
└───manage.py
└───blog
└───__init.py__
└───asgi.py
└───settings.py
└───urls.py
└───wsgi.py
Имея такую структуру можно уже начать писать что-то в нашем проекте. Но прежде чем мы начнем необходимо упомянуть ещё одну вещь. Каждый проект Джанго состоит из приложений(application) или просто app
Каждое такое приложение представляет собой некий кусок функциональности(feature) нашего проекта.
Например: Система комментариев - это одно приложение. Система оплаты - другое. Система авторизации ... и т.д.
Каждое такое приложение - это практически полностью самостоятельный код, со своей логикой, своими HTML шаблонами и стилями. Это некие мини-проекты внутри вашего проекта. И они так же как проект разделены на папки с файлами.
Если ты обратил внимание при создании проекта помимо папки blog также появился файл manage.py Этот файл является проводником, через который мы будем задавать команды нашему проекту. Одной из таких команд является создание приложений. Так как в нашем блоге самой большой функциональностью будут обладать посты. Давай создадим приложение posts:
$ cd blog/
$ python manage.py startapp posts
Теперь смотрим, что у нас получилось:
django-project
└───myvenv
└───blog
└───blog
└───__init.py__
└───asgi.py
└───settings.py
└───urls.py
└───wsgi.py
└───posts
└───migrations
└───__init.py__
└───admin.py
└───apps.py
└───models.py
└───tests.py
└───views.py
└───manage.py