Крупные компании и амбициозные стартапы часто выбирают фреймворк Django для своих продуктов и сервисов из-за его широких возможностей и высокой скорости работы, а разработчики на Django востребованы на рынке труда. Вместе с fullstack-разработчицей Анной Агабекян и программистом из Amazon Андреем Берендой разберемся, в чем секрет популярности Django и напишем серверную часть простого блога.
Что такое Django
Django — бесплатный фреймворк для разработки веб-приложений на языке Python. С его помощью можно быстро создавать безопасные сайты, которые легко поддерживать в дальнейшем.
Практически каждый сайт состоит из фронтенда, который пользователь видит каждый раз при переходе по ссылке, и бэкенда — скрытой части, которая работает на стороне сервера. Эта часть хранит в себе данные пользователей, обрабатывает контент и связывается со сторонними службами. Фреймворк позволяет упростить, ускорить и стандартизировать разработку бэкенда.
В Django есть множество шаблонов веб-разработки, а значит, в процессе не придется заново писать код часто используемых модулей — к примеру, компонентов панели управления сайтом, инструментов аутентификации пользователей, хранения данных и отправки форм.
Первая версия Django вышла в 2005 году, и до сих пор фреймворк остается популярным. Среди плюсов Django — частый выход обновлений и подробная документация. Также у него большое и активное сообщество, которое всегда готово помочь новичкам. Кроме того, у фреймворка есть много обучающих материалов, курсов и книг, часть из которых полностью бесплатна.
Где используют Django
Django используют не только стартапы и любители, но и крупные компании. Благодаря скорости работы и удобству его применяют в Spotify, YouTube, Reddit, поиске Google, DropBox и Pinterest.
Разработчики на Django востребованы на рынке труда и могут найти предложения о работе в мировых IT-компаниях. В зависимости от направления бизнеса Django-разработчик может быть:
— Fullstack-разработчиком;
— Backend-разработчиком;
— Разработчиком API.
В США Django-разработчик с опытом работы от 1 до 3 лет может претендовать на 79 000 долларов в год, а зарплаты высококвалифицированных программистов с богатым опытом доходят до 160 000 долларов в год. В России Django-разработчикам предлагают от 60 000 рублей на позиции Junior до 450 000 для Senior-специалистов.
С чего начать
Django строится на базе языка программирования Python. Поэтому начать следует с изучения его основ. Их хватит на первых порах, но в дальнейшем стоит достаточно глубоко погрузиться в язык программирования и его принципы.
Для начала работы с Django важно освоить базовый синтаксис Python, основные типы данных, циклы и функции. Также важно знать принципы объектно-ориентированного программирования и уметь применять их на практике. Этих знаний хватит, чтобы написать первые проекты на Django. П мере роста нужно будет изучать темы для продвинутых разработчиков.
Во время обучения полезно где-то хранить свои проекты, а во время работы — взаимодействовать с коллегами и делиться с ними своим кодом. Для этого обычно используют распределенные системы управления версиями, а самая популярная среди них — Git. Для начала достаточно знать основные команды: add, commit и push, pull. В дальнейшем полезно научиться пользоваться Git не только через удобный клиент с пользовательским интерфейсом, но и через консоль. Во время обучения и собственных проектов можно использовать популярный сервис GitHub, а на работе может быть закрытый Git-сервер или другой онлайн-сервис со схожими принципами работы.
Также нужно понимать, как устроен HTTP-запрос и из каких этапов он состоит: это маршрутизация, представления (view), сериализаторы, модели.
Маршрутизация помогает отследить путь запроса. URL состоит из статических и динамических (то есть меняющихся) частей. Когда путь запроса совпал с образцом, происходит вызов view — он обрабатывает запросы и возвращает какой-то ответ. Далее сериализаторы помогают понять, какие поля с данными можно отдать, получить и каким образом это сделать. Полей может быть много: например, у пользователя это будут имя и фамилия. Сериализаторы есть в фреймворке Django REST — он нужен для создания API.
За вид, в котором хранятся данные в базе данных, отвечают модели. Можно получить от пользователя полное имя, а в базе хранить его частями: имя, фамилия, отчество.
Как изучать Django
У фреймворка Django большое сообщество и много бесплатных материалов для изучения на разных языках, в том числе и на русском. Материалы также различаются по глубине изложения и сложности. Поэтому разработчики всех уровней смогут найти что-то подходящее для себя. Новичкам помогут:
- Официальная документация Django — на сайте собрана база знаний по всем аспектам разработки сайтов на Django. В разделе «Первые шаги» можно узнать, как установить фреймворк, настроить окружение и освоить основные понятия. Остальные топики познакомят с принципами обеспечения безопасности, администрирования и оптимизации;
- MDN Web Docs — документация от команды разработчиков Mozilla с обучающими материалами по всем аспектам веб-разработки, в том числе и Django. Цикл статей поможет освоить основные принципы работы с фреймворком, а в конце предлагается выполнить домашнее задание и написать собственный блог. Важное преимущество — документация от Mozilla доступна на русском языке.
Плюсы большого сообщества в том, что в интернете можно найти много обучающих материалов не только в виде документации, но и в виде роликов:
- Django For Everybody — полный курс по фреймворку Django, включающий в себя уроки по Python, Django, HTML, CSS, JavaScript и концепциям современного веб-программирования. Курс длится более 18 часов, доступен бесплатно на английском языке;
- Build a Social Media App with Django — практический 5-часовой курс по созданию приложения социальной сети на Django. Он подойдет разработчикам, которые уже знакомы с основами и хотят научиться применять навыки на практике. Видео также на английском языке.
Устанавливаем Python
Перед установкой надо проверить наличие Python. Для этого в терминале вводим команду python3 --version
.
Если Python еще не установлен, то следуем инструкции. Она отличается в зависимости от операционной системы компьютера.
Windows
Переходим на страницу версий языка Python для Windows и выбираем последнюю стабильную версию — сейчас это Python 3.11.1. Заметим, что она не работает на Windows 7 и более ранних версиях операционной системы.
После завершения загрузки запускаем файл. Откроется установщик, в котором следует обязательно поставить галочку в поле «Add Python to PATH». Дальше достаточно пройти по стандартным шагам установки.
macOS и Linux
Python на macOS и Linux обычно уже установлен и идет в составе операционной системы. Если надо переустановить язык программирования или выбрать другую версию, то можно обратиться к официальному сайту Python и скачать с него установочный файл.
Создаем виртуальное окружение
Виртуальное окружение позволяет изолировать проект от всей системы. Мы работаем с Django, и фреймворк нам нужен только в этом проекте. Виртуальное окружение позволяет установить его только для текущего проекта. Другие сторонние библиотеки также можно будет установить локально.
В Python виртуальное окружение создается с помощью утилиты virtualenv, которая позволяет управлять зависимостями. Для начала установим инструмент с помощью команды sudo pip3 install virtualenv
— вероятно, система попросит ввести пароль от учетной записи.
После этого создадим папку, в которой развернем виртуальное окружение и будем хранить код проекта. Папку можно создать с помощью пользовательского интерфейса системы или с помощью терминала. Для этого используют команду mkdir имя-папки
. Перейти в папку, находясь в терминале, можно с помощью cd имя-папки
. Создаем папку любым удобным способом и открываем ее в терминале.
Теперь создадим виртуальное окружение. Для этого, находясь в созданной папке, вызовем команду virtualenv venv -p python3
. Если все прошло успешно, то в терминале появятся сообщение created virtual environment
и служебная информация. Окружение создано, но на него надо переключиться, иначе все библиотеки и фреймворки будут устанавливаться в общую директорию. Для переключения выполняем команду source venv/bin/activate
. Важно отметить, что команда также выполняется в папке проекта.
Устанавливаем Django
Теперь все готово для установки самого фреймворка Django. Сделать это можно с помощью команды pip install django
. Важно и эту команду выполнить в папке проекта и в виртуальном окружении. Поэтому обращаем внимание на название папки в терминале и строку (venv)
перед ним.
Можно заметить, что помимо Django установились и вспомогательные библиотеки:
- sqlparser — парсер для взаимодействия с базами данных;
- asgiref — интерфейс для работы с асинхронными веб-приложениями и сервисами на базе Python.
Теперь можно переходить к созданию веб-приложения.
Разрабатываем первое веб-приложение
Создаем проект
В Django есть два фундаментальных понятия:
- проект — это весь веб-сервис в целом. Один проект может состоять из нескольких взаимосвязанных приложений, но допустимо и одно приложение во всем проекте;
- приложение — модуль проекта. К примеру, каждое приложение может отвечать за разные типы пользователей. Если бы мы разрабатывали онлайн-магазин, то добавили бы отдельные модули для обычных покупателей, продавцов, модераторов и администраторов.
Для создания проекта необходимо выполнить команду django-admin startproject project-name
. Создадим проект с названием example
. После этого надо перейти в папку с созданным проектом и зафиксировать изменения с помощью команды python manage.py migrate
.
Теперь можно запустить локальный сервер и посмотреть на результат работы. Сервер запускается с помощью команды python manage.py runserver
. После этого можно перейти в браузере по адресу http://127.0.0.1:8000
или http://localhost:8000
. На странице должно быть сообщение о том, что проект успешно создан. Теперь можно отключить сервер в терминале с помощью нажатия комбинации клавиш Ctrl+C
:
Создаем профиль администратора
В любом веб-приложении обычным пользователям доступна только часть возможностей платформы. К примеру, в социальных сетях пользователи могут удалять только свои публикации, а у администратора есть возможность удалить любой контент. Для этой же цели создадим профиль администратора, с помощью которого сможем вносить изменения на сайте.
Создать его можно с помощью команды python manage.py createsuperuser
. Django попросит указать имя пользователя, адрес электронной почты и задать пароль. После этого можно перейти на страницу администратора, для этого надо запустить сервер и открыть в браузере содержимое по адресу http://127.0.0.1:8000/admin
:
Создаем приложение
Как уже говорилось ранее, проект на Django состоит из одного или нескольких приложений, которые отвечают за отдельные задачи на сайте и взаимодействуют между собой. В нашем примере будет всего одно приложение, а создадим мы его с помощью вызова команды python manage.py startapp app-name
.
Создаем представление (views)
Наше приложение должно отвечать на запросы. Для этого создадим представление, которое будет обрабатывать их. Перейдем в папку приложения и откроем файл views.py
. По умолчанию файл пустой, поэтому дополним его кодом:
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse("Добро пожаловать на главную страницу.")
Теперь в папке приложения создаем файл urls.py
и вставляем в него следующий код:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name = 'index'),
]
URL-адреса приложения настроены, но не связаны с основным приложением. Поэтому переходим в папку проекта, открываем файл urls.py и дополняем его. Обратите внимание, что у нас два файла с именем urls.py
: один в папке с проектом example
, а другой — в app
.
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('app/', include('app.urls')),
]
Теперь проверяем работу созданного представления. Для этого запускаем сервер и переходим в браузере по ссылке http://127.0.0.1:8000/app
. На экране должно появиться сообщение «Добро пожаловать на главную страницу».
Создаем модель (models)
В проекте надо хранить данные сайта, поэтому создадим модель нашего приложения. У моделей есть особенности:
- каждая модель Django отображает одну таблицу базы данных;
- модель представляет собой класс Python;
- каждый атрибут класса — поле базы данных.
Открываем файл models.py в папке приложения app
и вставляем в него следующий код:
from django.db import models
class Post(models.Model):
title= models.CharField(max_length=200)
content= models.TextField()
pub_date = models.DateTimeField('Дата публикации')
В базе данных нашего проекта есть поля с названием статьи (title), ее содержимым (content) и датой публикации (pub_date). Для сохранения изменений необходимо синхронизировать их с помощью поочередного выполнения команд python manage.py makemigrations
и python manage.py migrate
.
Теперь в панели администратора появилось наше приложение. Из него можно создавать и публиковать посты. На этом этапе веб-приложение блога еще требует доработки, красивого дизайна и продуманного интерфейса для публикации постов из редактора на сайте, а не из панели администратора.
Что еще можно написать на Django
Возможности Django практически безграничны. Кроме блога с помощью фреймворка можно построить:
- онлайн-магазин с возможностью добавлять товары в корзину, оформлять доставку, оставлять отзывы, оплачивать заказ и общаться со службой поддержки;
- социальную сеть с рекомендательной системой и разными типами публикуемого контента;
- агрегатор новостей с фильтрами по дате, городам, темам и рейтингу;
- сайт онлайн-школы с возможностью создавать тесты по темам и проходить их, автоматически получая оценку;
- портфолио разработчика, включающее в себя общие данные, опыт работы и список собственных проектов;
- сайт, который выдает сокращенные ссылки;
- Telegram-бота, который будет отправлять напоминания на почту.