Django - что это такое, порядок установки

Курс по Django: https://stepik.org/a/183363

Как вы думаете, что общего между youtube, google search, dropbox и instagram? Да, конечно, все они сделаны с использованием фреймворка Django! И этим занятием мы открываем курс по этому очень популярному фреймворку, разработанному специально для языка Python.

Если вы хотите во всех подробностях понимать его работу, то необходим следующий багаж знаний:

  • язык Python (в том числе и его ООП);
  • работа с шаблонами (например, пакет Jinja);
  • базовые знания работы с SQL-запросами;
  • регулярные выражения.

И еще желательно знать основы ORM – взаимодействие с БД через модели классов. Яркий пример реализации ORM – пакет SQLAlchemy. Далее, на занятиях этого цикла я буду полагать, что вы хорошо знаете язык Python, шаблонизатор Jinja, умеете составлять регулярные выражения (пакет re) и SQL-запросы. Обо всем этом я уже рассказывал на нашем канале и ссылки на соответствующие плейлисты вы найдете под этим видео.

Давайте теперь разберемся, для чего же вообще предназначен фреймворк Django? Если очень кратко, то для обеспечения работы сайтов на стороне сервера. То есть, это инструмент для бэкенд разработчиков. А если немного подробнее, то процесс взаимодействия пользователя с сайтом можно представить в таком виде:

Сначала от клиента поступает запрос, например, он вводит в браузере адрес https://youtube.com. Информационные пакеты начинают двигаться в сторону сервера с сайтом Youtube. Вопрос о том, как они это делают, мы оставим в стороне, это называется маршрутизацией в сети Интернет. Главное, что они доходят до сервера (то есть, компьютера), где расположен Youtube. На этом компьютере установлено специальное программное обеспечение – Web-сервер. Очень часто используют уже готовые разработки с открытым кодом: Apache и Nginx. Реже какие-либо свои программные продукты. Так вот, этот Web-сервер постоянно «слушает» каналы связи и в момент поступления запроса от пользователя должен перенаправить его на обработку соответствующему сайту (так как на одном сервере может находиться множество сайтов). Сайты способны по разному обрабатывать входящие запросы, например, используя PHP и CGI скрипты, или же могут использовать фреймворки – обертки для выбранного языка программирования, значительно упрощающие обработку запросов от клиентов сайта. В частности, Django – это и есть такая обертка для языка Python. В этом случае сервер по интерфейсу WSGI передает обработку запроса этому фреймворку, используется определенное представление, отвечающее за текущий запрос, и результатом обработки, как правило, является HTML-страница, которая сначала передается Web-серверу также по WSGI-интерфейсу, а он уже передает страницу конечному пользователю. Страница отображается в браузере клиента и он видит заветный сайт Youtube. Вот так в очень упрощенном виде происходит взаимодействие между пользователем, сервером и фреймворком.

WSGI (Web Server Gateway Interface) — стандарт взаимодействия между Python-программой, выполняющейся на стороне сервера, и самим веб-сервером.

Отлично, теперь мы знаем, где находится фреймворк и за что он отвечает. Но как нам в домашних условиях, в учебных целях или целях разработки проекта запустить Django? Здесь есть хорошая новость. Во-первых, во всех современных компьютерах функционирует внутренняя сеть, которая называется:

localhost – 127.0.0.1

Во-вторых, пакет Django в своем составе содержит отладочный Web-сервер, который можно запустить на домашнем ПК и проверить работу сайта, не используя сторонний сервер. Конечно, после полной разработки и отладки проекта сайты почти всегда размещаются на арендуемых серверах (хостингах) и уже там работают в боевом режиме.

Создание виртуального окружения

Давайте установим фреймворк Django на свой домашний компьютер. Здесь есть множество вариантов, мы воспользуемся наиболее распространенным – установим официальный релиз в новое виртуальное окружение (venv). Давайте я поясню, что означают эти «умные фразы». Как вы уже догадались, Django – это серьезный фреймворк и часто он взаимодействует с другими пакетами языка Python, да и сама версия Python может иметь значение. Так вот, чтобы все модули согласованно работали и выдавали ожидаемые результаты на запросы пользователей, желательно и на тестовом сервере и на реальном использовать одни и те же версии программных продуктов: начиная с выбранной версии Django и заканчивая определенной версией интерпретатора языка Python.

Но на компьютере уже могут присутствовать другие версии программных модулей или же их потребуется установить в будущем. Например, новую версию интерпретатора Python. Это может негативно сказаться на разрабатываемом проекте. Чтобы этого не происходило, как раз и создается виртуальное окружение, и все что установлено внутри него надежно изолируется от других окружений, в том числе и глобального. Мы именно так и поступим – создадим виртуальное окружение и разместим в нем текущую версию языка Python и фреймворка Django.

Для этого нам понадобится установленный интерпретатор Python в глобальном окружении и работа с командной строкой. Если Python у вас еще не установлен, то скачайте его с официального сайта:

https://www.python.org/downloads/

Далее, я буду все показывать на примере ОС Windows, т.к. именно под ней работаю. На Linux и MacOS все происходит похожим образом, но есть отличия. Основные из них я буду отмечать по ходу изложения. Итак, чтобы работать с командной строкой Windows можно нажать комбинацию клавиш Win+R и в появившемся окне набрать команду cmd. Если все сделаете правильно, то появится вот такое консольное окно:

Но я воспользуюсь другой, более удобной бесплатной программой ConEmu, которую можно бесплатно скачать по адресу:

https://conemu.ru

После установки и первого запуска в поле «Choose your startup task or even shell with arguments:» укажу{Shells::cmd (Admin)}:

И после нажатия на кнопку «OK» увидим следующее окно:

Для проверки работоспособности интерпретатора Python наберем команду:

python -V

(В Linux или MacOS при установке Python версии 3 и следует использовать команду python3 -V).

Если все работает, то должны увидеть текущую версию языка. Если этого не произошло, то, скорее всего, у вас не установлен Питон в глобальном окружении. Далее, с помощью команды:

pip list

Можно посмотреть список установленных пакетов опять же в глобальном окружении, т.к. мы именно в нем сейчас находимся.

Далее, я создам папку, в которой будет устанавливаться виртуальное окружение:

D:/Python/django/djsite

И в командной строке перейду в этот каталог:

cd D:/Python/django/djsite

Затем, выполняем команду:

python -m venv venv

для создания виртуального окружения с именем venv в текущей папке. (Если вы работаете под Linux, то соответственно пишете команду python3). Все, виртуальное окружение создано и мы видим дополнительную папку venv. Внутри нее имеются различные вложенные каталоги, которые и определяют содержимое данного окружения. Осталось его запустить. Находясь в папке D:/Python/django/djsite, выполним команду:

.\venv\Scripts\activate

(Если вы работаете под Linux, то выполняется команда «source venv/bin/activate»). В действительности, мы запускаем исполняемый файл activate, который находится в подкаталоге \venv\Scripts\. В результате должна появиться надпись (venv), означающая, что мы находимся в виртуальном окружении с именем venv. Если теперь выполнить команду:

pip list

то увидим всего два пакета: сам pip и setuptools. То есть, это чистое виртуальное окружение, в котором два пакета и интерпретатор языка Python.

Сразу отмечу, чтобы выйти из виртуального окружения достаточно выполнить команду:

deactivate

и мы возвращаемся в глобальное окружение.

Установка Django

Теперь у нас все готово для установки самого фреймворка Django в созданное виртуальное окружение. Так как я в своей работе использую интегрированную среду PyCharm, то дальнейшие действия по работе с виртуальным окружением буду делать через нее. Уверен, что большинство из вас тоже пользуются PyCharm, поэтому все должно быть предельно понятно. Итак, открываем созданный проект, указав папку:

D:/Python/django/djsite

и после индексирования всех файлов интегрированная среда автоматически активизирует установленное виртуальное окружение. Если это по каким-то причинам не произошло, то нужно вручную указать PyCharm это окружение. Для этого следует перейти на вкладку Project Interpreter:

File -> Settings -> Project:djsite -> Project Interpreter

и указать интерпретатор из установленного окружения.

Далее, находясь в корневой папке проекта, мы должны выполнить непосредственно установку Django с помощью очевидной команды:

pip install django

После этого в наше виртуальное окружение будет устанавливаться данный фреймворк со всеми необходимыми зависимостями. Если теперь выполнить команду:

pip list

то мы увидим последнюю рабочую версию Django и несколько дополнительных пакетов, необходимых для его работы.

Но это лишь ядро фреймворка с общим функционалом. Используя это ядро, мы можем создавать множество разных сайтов под управлением Django в рамках текущего виртуального окружения. Чтобы посмотреть список команд ядра, достаточно в терминале записать:

django-admin

Так вот, для создания нашего первого сайта, нам понадобится команда startproject, которая записывается так:

django-admin startproject <имя сайта>

Здесь «имя сайта», обычно, является доменным именем. Например, если мы собираемся располагать сайт на домене:

coolsite.ru

то в качестве имени логично выбрать coolsite. Давайте так и сделаем, выполним команду:

django-admin startproject coolsite

И фреймворк создал папку coolsite в рабочей папке проекта. Внутри этой папки имеется одноименная вложенная папка пакета, который определяет конфигурацию нашего сайта. Поэтому его часто так и называют – пакетом конфигурации. Также есть еще один отдельный файл manage.py, через который и производится управление данным сайтом. Например, мы будем создавать приложение, выполнять миграции БД, запускать тестовый веб-сервер и так далее. В действительности, это всего лишь своеобразная утилита, посредник, который передает наши команды django-admin и выполняет их «от лица» нашего сайта. Подробнее обо всем этом мы еще будем говорить.

Давайте теперь запустим тестовый веб-сервер на нашем локальном компьютере и убедимся, что созданный сайт работает. Для этого перейдем в папку coolsite:

cd coolsite

и выполним файл manage.py с командой runserver:

python manage.py runserver

Происходит запуск локального Веб-сервера, который поставляется вместе с Django, и наш сайт должен быть доступен по адресу http://127.0.0.1:8000.

Преимущество отладочного сервера в том, что он автоматически перезапускается при изменении программы сайта. На практике это дает большое удобство. Но полностью полагаться на эту возможность не стоит, так как иногда Django все же игнорирует изменения, а точнее, новые дополнения, например, новые созданные файлы. Поэтому, если вы видите, что что-то работает не так, попробуйте просто перезапустить сервер вручную. Для его завершения достаточно нажать комбинацию клавиш:

Ctrl + Break (а также Ctrl + C в Windows)

а, затем, снова запустить:

python manage.py runserver

Также обратите внимание, что при первом запуске сервера в проекте появился еще один файл db.sqlite3 – файл БД SQLite3. Дело в том, что по умолчанию Django использует именно такую СУБД. В дальнейшем, мы можем это изменить и указать любую другую СУБД, которую поддерживает данный фреймворк. Это может быть:

PostgreSQL, MariaDB, MySQL, Oracle и SQLite

Но вернемся к запуску сервера. Его можно запускать также и со следующими параметрами:

python manage.py runserver 4000

или так:

python manage.py runserver 192.168.1.1:4000

Я, надеюсь, из этого занятия вы поняли, что из себя представляет фреймворк Django, как он устанавливается, как создать проект нового сайта и как проверить его работоспособность с помощью тестового веб-сервера.

Курс по Django: https://stepik.org/a/183363

Видео по теме