Цикл статей «Django шаг за шагом»
Информация, которая будет дана в данном посте, исходя из заголовка, будет актуальная для версий Django 1.9.x и Python 3.4.x, что будут соответствовать последним версиям на момент написания поста. Для проверки версии Django — фреймворка существует замечательная команда:
python -c "import django; print(django.get_version())"
В мире так принято, что перед делом, надо знать, что делаешь и подходить нужно со знанием дела и, поэтому, это тот самый момент, когда пора понимать основу структуры проекта на Django. И, как уже отмечали, проект на Django — целое, которое составлено из отдельных частей(приложений, модулей, пакетов и т.п.), что дает ему гибкость в работе и продуктивность в использовании кода, соответственно. Создав проект мы должны, далее, уже создать приложения, которые будут выполнять в проекте ту или иную функцию.
Перед тем, как добавить новое приложение к проекту мы должны проделать шаги из серии прошлых частей постов, а именно:
- установить интерпретатор Python;
- установить менеджер пакетов pip;
- установить модуль создания виртуальных сред virtualenv через менеджера пакетов pip, что поможет нам управлять проектом находясь в UNIX — подобной среде;
- создать виртуальную среду (например, test) и активировать его;
- установить фреймворк Django через менеджера пакетов pip из активированной виртуальной среды;
- создать новый проект(например, mysite) в текущей виртуальной среде.
Итак, проект под названием mysite у нас есть, осталось только добавить приложения к этому проекту. Но, перед этим, нужно разобраться со структурой. На данный момент, структура пустого проекта такова
По порядку разберем каждую папку и файл начального проекта, который не содержит приложений:
- Внешняя папка mysite/ — эта директория является корневой папкой нашего сайта и просто контейнером, где будут создаваться наши приложения и файлы для управления проектом. Название данной директории ничего не значит для Django и его можно поменять на свое усмотрение;
- manage.py — инструмент управления из командной строки при помощи которого можно управлять проектом различными путями. В частности, при помощи данного инструмента запускается наш проект на сервере Python. Про этот инструмент можно почитать дополнительно вот тут;
- внутренняя директория mysite/ — это текущий и единственный, на данный момент, пакет Python в нашем проекте. Имя данного пакета. в дальнейшем, будет использовано для импорта внутренней структуры кода, к примеру, для импорта mysite.urls;
- mysite/__init__.py — этот пустой файл предназначен для указания и регистрации пакетов. Наличие данного файла в директории mysite/ говорит Python, чтобы он различал эту директорию в виде пакета. Дополнительно об этом можно почитать тут;
- mysite/settings.py — это файл установок и конфигурации текущего проекта Django;
- mysite/urls.py — это URL — декларации текущего Django — проекта или, иначе говоря,“таблица контента” вашего Django-проекта. Дополнительно об этом можно почитать тут;
- mysite/wsgi.py — точки входа для WSGI-совместимого веб-сервера. Подробно об этом тут.
После того, как разобрали начальную структуру пустого проекта, давайте создадим какое-нибудь(например, блог) приложение через команду:
python manage.py startapp blog
После выполнения данной команды в корневой папке проекта появится новая директория blog/, которая будет содержать свой список файлов
Раскроем суть каждой папки и файла в приложении:
- migrations/ — папка, в которой будут храниться миграции базы данных;
- _init_.py — указание Python, чтобы он обработал папку приложения в виде пакета проекта;
- admin.py — здесь хранятся настройки стандартной административной панели;
- models.py — файл, в котором будут модели приложения;
- test.py — песочница юнит-тестов;
- views.py — файл для хранения видов.
Суть структуры приложения проекта на Django сводится к тому, что оно работает частично по образу MVC, но существенно отличается от этой модели хотябы потому, что контроллеры в MVC — это URL Django.