Баннер мобильный (3) Пройти тест

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

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

Инструкция

1 марта 2024

Поделиться

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

    Для начала работы с 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-бота, который будет отправлять напоминания на почту.

    Инструкция

    Поделиться

    Скопировано
    0 комментариев
    Комментарии