Django

Django

Django Packages — это каталог многократно используемых приложений, сайтов, инструментов и многого другого для ваших проектов Django https://djangopackages.org/

Перед началом работы с Django нам естественно надо установить интерпретатор Python.

Создаём на диске С каталог virtualenv Открываем консоль и переходим C:\virtualenv

Существуют разные способы установки Django. Рассмотрим рекомендуемый способ.

Для установки нам потребуется пакетный менеджер pip. Менеджер pip позволяет загружать пакеты и управлять ими. Обычно при установке python также устанавливается и менеджер pip. В этом случае мы можем проверить версию менеджера, выполнив в командной строке/терминале следующую команду:

pip -V

Если pip не установлен, то мы увидим ошибку типа "pip" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. В этом случае нам надо установить pip. Для этого можно выполнить в командной строке/консоли следующую команду:

python -m ensurepip --upgrade

Если pip ранее уже был установлен, то можно его обновить с помощью команды

pip install --upgrade pip

Установка виртуальной среды

Виртуальная среда или venv не является неотъемлимой частью разработки на Django. Однако ее рекомендуется использовать, так как она позволяет создать множество виртуальных сред Python на одной операционной системе. Благодаря виртуальной среде приложение может запускаться независимо от других приложений на Python.

В принципе можно запускать приложения на Django и без виртуальной среды. В этом случае все пакеты Django устанавливаются глобально. Однако что если после создания первого приложения выйдет новая версия Django? Если мы захотим использовать для второго проекта новую версию Django, то из-за глобальной установки пакетов придется обновлять первый проект, который использует старую версию. Это потребует некоторой дополнительной работы по обновлению, так как не всегда соблюдается обратная совместимость между пакетами. Если мы решим использовать для второго проекта старую версию, то мы лишиемся потенциальных преимуществ новой версии. И использование виртуальной среды как раз позволяет разграничить пакеты для каждого проекта.

Для работы с виртуальной средой в python применяется встроенный модуль venv

Итак, создадим вируальную среду. Вначале определим каталог для виртуальных сред, где будут располагаться все связанные файлы и папки. Например, пусть это будет каталог C:\virtualenv. Прежде всего перейдем в командной строке/терминале в этот каталог с помощью команды cd. Затем для создания виртуальной среды выполним следующую команду:

python -m venv hello

Модулю venv передается название среды, которая в данном случае будет называться “hello”.

После этого в текущей папке будет создан подкаталог hello.

Напоминаю, что вы должны быть в каталоге с виртуальным окружением. Перейдём в этот каталог, если вы в неё не находитесь.

cd C:\virtualenv

Для использования виртуальную среду надо активировать. И каждый раз, когда мы будем работать с проектом Django, связанную с ним виртуальную среду надо активировать. Например, активируем выше созданную среду, которая располагается в текущем каталоге в папке hello. Если наша ОС – Windows, то в папке hello/Scripts/ мы можем найти файл activate.bat, который активирует виртуальную среду. Поэтому для Windows активация виртуальной среды будет выглядеть таким образом:

hello\Scripts\activate.bat

После окончания работы с виртуальной средой мы можем ее деактивировать. Для этого в той же папке hello/Scripts/ мы можем найти файл deactivate.bat и таким же образом запустить его.

Установка Django

После активации виртуальной среды для установки Django выполним в консоли следующую команду

python -m pip install Django

Создание первого проекта

Для проектов Django определим какой-нибудь каталог на жестком диске. Например, пусть это будет каталог C:\django. Перейдем в консоли к этому каталогу с помощью команды cd.

При установке Django в папке виртуальной среды устанавливается утилита django-admin. А на Windows также исполняемый файл django-admin.exe. Их можно найти в папке виртуальной среды, в которую производилась установка Django: на Windows – в подкаталоге Scripts, а на Linux/MacOS – в каталоге bin.

django-admin предоставляет ряд команд для управления проектом Django. В частности, для создания проекта применяется команда startproject. Этой команде в качестве аргумента передается название проекта.

Итак, вначале активируем ранее созданную виртуальную среду (например, среду hello, которая была создана в прошлой теме, если она ранее не была активирована). Например, в моем случае виртуальная среда называется “hello” и размещена в каталоге C:\virtualenv\hello\, соответсвенно для ее активации мне необходимо выполнить скрипт “C:\virtualenv\hello\Scripts\activate”.

И после активации виртуальной среды выполним следующую команду:

C:\virtualenv\hello\Scripts\activate
django-admin startproject helloapp

В данном случае мы создаем проект helloapp. И после выполнения этой команды в текущей папке будет создан подкаталог helloapp.

Первый проект на Python и Django

Проект будет состоять из следующих элементов:

  • manage.py: выполняет различные команды проекта, например, запускает приложение
  • hello
    • __init__.py: данный файл указывает, что папка, в которой он находится, будет рассматриваться как модуль. Это стандартный файл для Python.
    • settings.py: содержит настройки конфигурации проекта
    • urls.py: содержит шаблоны URL-адресов, по сути определяет систему маршрутизации проекта
    • wsgi.py: содержит свойства конфигурации WSGI (Web Server Gateway Inerface). Он используется при развертывании проекта.
    • asgi.py: название файла представляет сокращение от Asynchronous Server Gateway Interface и расширяет возможности WSGI, добавляя поддержку для вщавимодействия между асинхронными веб-серверами и приложениями.

Запустим проект на выполнение. Для этого с помощью команды cd перейдем в консоли к папке проекта. И затем для запуска проекта выполним следующую команду:

cd c:\django\helloapp

python manage.py runserver
Запуск первого проекта на Python и Django

После запуска проекта в консоли мы увидим адрес, по которому запущен проект. Как правило, это адрес http://127.0.0.1:8000/. Откроем любой веб-браузер и введем данный адрес в адресную строку браузера. И нам откроется содержимое по умолчанию.

Первое веб-приложение на Python и Django

В консоли будет запущен сервер

Для выполнения следующих действий мы либо закрываем консоль, либо открываем в новой вкладке новую консоль командной строки (CMD).

Создание первого приложения

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

При создании проекта он уже содержит несколько приложений по умолчанию.

  • django.contrib.admin
  • django.contrib.auth
  • django.contrib.contenttypes
  • django.contrib.sessions
  • django.contrib.messages
  • django.contrib.staticfiles

Список всех приложений можно найти в проекте в файле settings.py в переменной INSTALLED_APPS:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

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

python manage.py startapp firstapp
Создание первого приложения на Python с помощью веб-фреймворка Django

В результате в проекте Django будет создано приложение firstapp. Имя приложение указывается после startapp. Оно может быть любым. И после выполнения этой команды мы увидим в проекте новую папку, которое будет хранить все файлы созданного приложения:

Hello World в Django

Рассмотрим вкратце его структуру:

  • папка migrations: предназначена для хранения миграций – скриптов, которые позволяют синхронизировать структуру базы данных с определением моделей
  • __init__.py: указывает интерпретатору python, что текущий каталог будет рассматриваться в качестве пакета
  • admin.py: предназначен для административных функций, в частности, здесь призводится регистрация моделей, которые используются в интерфейсе администратора
  • apps.py: определяет конфигурацию приложения
  • models.py: хранит определение моделей, которые описывают используемые в приложении данные
  • tests.py: хранит тесты приложения
  • views.py: определяет функции, которые получают запросы пользователей, обрабатывают их и возвращают ответ

Но пока приложение никак не задействуется. Его надо зарегистрировать в проекте Django. Для этого откроем файл settings.py и добавим в конец массива INSTALLED_APPS наше приложение:

В проекте может быть несколько приложений, и каждое из них надо добавлять таким вот образом.

Теперь определим какие-нибудь простейшие действия, которые будет выполнять данное приложение, например, отправлять в ответ пользователю строку “Hello World”.

Для этого перейдем в проекте приложения firstapp к файлу views.py, Изменим код следующим образом:

from django.http import HttpResponse
  
def index(request):
    return HttpResponse("Привет progi.online")

В данном случае мы импортируем класс HttpResponse из стандартного пакета django.http. Затем определяется функция index(), которая в качестве параметра получает объект запроса request. Класс HttpResponse предназначен для создания ответа, который отправляется пользователю. И с помощью выражения return HttpResponse("Привет progi.online") мы отправляем пользователю строку “Привет progi.online”

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

from django.contrib import admin
from django.urls import path
from firstapp import views
 
urlpatterns = [
    path('', views.index, name='home'),
    path('admin/', admin.site.urls),
]

Чтобы использовать функцию views.index вначале импортируем модуль views. Затем определяем сопоставление маршрута ‘ ‘ и функции views.index и также дополнительно имя для маршрута: name='home'. По сути маршрут ‘ ‘ будет сопоставляться с запросом к корню приложения.

Теперь снова запустим приложение командой

python manage.py runserver

И вновь перейдем в браузере по адресу http://127.0.0.1:8000/, и браузер нам отобразит строку 

Теперь поиграемся немного с кодом запросов и попробуем вставить какой-нибудь тег. Напимер <h1>Привет</h1> progi.online

Поэтому я настоятельно рекоменду перед изучение Django предварительно выучить HTML, CSS и JS

Представления и маршрутизация

Обработка запроса