С чего начать изучать Django и как написать первое веб-приложение

веб-приложение на Django
Эксперты деляется качественными источниками и проверенными практиками

Крупные компании и амбициозные стартапы часто выбирают фреймворк 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. Поэтому начать следует с изучения его основ. Их хватит на первых порах, но в дальнейшем стоит достаточно глубоко погрузиться в язык программирования и его принципы.

Читайте также: С чего начать учить 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.

установить Python3
Если Python уже установлен, то в терминал выводится такое сообщение

Если Python еще не установлен, то следуем инструкции. Она отличается в зависимости от операционной системы компьютера.

Windows

Переходим на страницу версий языка Python для Windows и выбираем последнюю стабильную версию — сейчас это Python 3.11.1. Заметим, что она не работает на Windows 7 и более ранних версиях операционной системы.

версия Python 3.11.1 на официальном сайте языка программирования
Пролистываем страницу в самый низ к разделу «Файлы» и скачиваем подходящую версию, исходя из разрядности операционной системы.
Лучше установить 64-битную версию Python
Разработчики рекомендуют использовать 64-битную версию, также есть тестовая реализация для ARM

После завершения загрузки запускаем файл. Откроется установщик, в котором следует обязательно поставить галочку в поле «Add Python to PATH». Дальше достаточно пройти по стандартным шагам установки.

macOS и Linux

Python на macOS и Linux обычно уже установлен и идет в составе операционной системы. Если надо переустановить язык программирования или выбрать другую версию, то можно обратиться к официальному сайту Python и скачать с него установочный файл.

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

Виртуальное окружение позволяет изолировать проект от всей системы. Мы работаем с Django, и фреймворк нам нужен только в этом проекте. Виртуальное окружение позволяет установить его только для текущего проекта. Другие сторонние библиотеки также можно будет установить локально.

В Python виртуальное окружение создается с помощью утилиты virtualenv, которая позволяет управлять зависимостями. Для начала установим инструмент с помощью команды sudo pip3 install virtualenv — вероятно, система попросит ввести пароль от учетной записи.

После этого создадим папку, в которой развернем виртуальное окружение и будем хранить код проекта. Папку можно создать с помощью пользовательского интерфейса системы или с помощью терминала. Для этого используют команду mkdir имя-папки. Перейти в папку, находясь в терминале, можно с помощью cd имя-папки. Создаем папку любым удобным способом и открываем ее в терминале.

папка django-project, открытая в терминале
Для примера мы создали папку django-project и открыли ее с помощью терминала. В таком случае слева от строки ввода команды будет отображаться имя папки.

Теперь создадим виртуальное окружение. Для этого, находясь в созданной папке, вызовем команду virtualenv venv -p python3. Если все прошло успешно, то в терминале появятся сообщение created virtual environment и служебная информация. Окружение создано, но на него надо переключиться, иначе все библиотеки и фреймворки будут устанавливаться в общую директорию. Для переключения выполняем команду source venv/bin/activate. Важно отметить, что команда также выполняется в папке проекта.

виртуальное окружение django, надпись venv
Если все сделано правильно, то слева от названия папки в терминале появится надпись (venv)

Устанавливаем Django

Теперь все готово для установки самого фреймворка Django. Сделать это можно с помощью команды pip install django. Важно и эту команду выполнить в папке проекта и в виртуальном окружении. Поэтому обращаем внимание на название папки в терминале и строку (venv) перед ним.

Процесс установки Django
Установка занимает меньше минуты, а после нее в терминале появится такое сообщение

Можно заметить, что помимо Django установились и вспомогательные библиотеки:

  • sqlparser — парсер для взаимодействия с базами данных;
  • asgiref — интерфейс для работы с асинхронными веб-приложениями и сервисами на базе Python.

Теперь можно переходить к созданию веб-приложения.

Разрабатываем первое веб-приложение

Создаем проект

В Django есть два фундаментальных понятия:

  • проект — это весь веб-сервис в целом. Один проект может состоять из нескольких взаимосвязанных приложений, но допустимо и одно приложение во всем проекте;
  • приложение — модуль проекта. К примеру, каждое приложение может отвечать за разные типы пользователей. Если бы мы разрабатывали онлайн-магазин, то добавили бы отдельные модули для обычных покупателей, продавцов, модераторов и администраторов.

Для создания проекта необходимо выполнить команду django-admin startproject project-name. Создадим проект с названием example. После этого надо перейти в папку с созданным проектом и зафиксировать изменения с помощью команды python manage.py migrate.

создать проект django
В терминале появится статус всех внесенных изменений

Теперь можно запустить локальный сервер и посмотреть на результат работы. Сервер запускается с помощью команды python manage.py runserver. После этого можно перейти в браузере по адресу http://127.0.0.1:8000 или http://localhost:8000. На странице должно быть сообщение о том, что проект успешно создан. Теперь можно отключить сервер в терминале с помощью нажатия комбинации клавиш Ctrl+C:

Картинка после отключения терминала
Теперь можно отключить сервер в терминале с помощью нажатия комбинации клавиш Ctrl+C

Создаем профиль администратора

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

Создать его можно с помощью команды python manage.py createsuperuser. Django попросит указать имя пользователя, адрес электронной почты и задать пароль. После этого можно перейти на страницу администратора, для этого надо запустить сервер и открыть в браузере содержимое по адресу http://127.0.0.1:8000/admin:

Так выглядит страница входа администратора django
Страница входа в аккаунт администратора. Надо ввести имя пользователя и пароль, которые указывали во время создания администратора

Создаем приложение

Как уже говорилось ранее, проект на Django состоит из одного или нескольких приложений, которые отвечают за отдельные задачи на сайте и взаимодействуют между собой. В нашем примере будет всего одно приложение, а создадим мы его с помощью вызова команды python manage.py startapp app-name.

Приложение django, папка с конфигурационными файлами
В директории проекта появится папка с именем приложения, а в ней будут содержаться конфигурационные файлы

Создаем представление (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

Возможности Django практически безграничны. Кроме блога с помощью фреймворка можно построить:

  • онлайн-магазин с возможностью добавлять товары в корзину, оформлять доставку, оставлять отзывы, оплачивать заказ и общаться со службой поддержки;
  • социальную сеть с рекомендательной системой и разными типами публикуемого контента;
  • агрегатор новостей с фильтрами по дате, городам, темам и рейтингу;
  • сайт онлайн-школы с возможностью создавать тесты по темам и проходить их, автоматически получая оценку;
  • портфолио разработчика, включающее в себя общие данные, опыт работы и список собственных проектов;
  • сайт, который выдает сокращенные ссылки;
  • Telegram-бота, который будет отправлять напоминания на почту.
(рейтинг: 5, голосов: 4)
Добавить комментарий