Проекты

Какие задачи решаем с помощью Django, веб-фреймворка на Python

Какие задачи решаем с помощью Django, веб-фреймворка на Python

Python — это универсальный язык программирования с простым синтаксисом и огромным комьюнити. С его помощью можно решать задачи разного масштаба — от создания ботов до разработки приложений, веб-сайтов и даже машинного обучения.

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

Коротко

  • 01
    Технология

    Python-фреймворк Django

  • 02
    Какие задачи решает
    • Создание сервисов обработки данных
    • Создание веб-приложений, социальных сетей и веб-чатов
    • Разработка различных видов API
    • Создание сервисов CMS, CRM, email-рассылок
  • 03
    Каким компаниям подойдет

    E-commerce, обучающие платформы, аналитические центры, информационные и новостные ресурсы, сервисы управления рассылками, социальные сети, стартапы

  • 04
    Преимущества

    Быстрая разработка, возможность легко вносить изменения в функции систем и масштабировать проекты, высокий уровень безопасности, стабильность работы сервисов

Почему выбираем Django

Django — это популярный и многофункциональный фреймворк для веб-приложений, а также набор библиотек: компонентов, модулей, утилит и готовых решений на языке Python. На Django Python написаны Pinterest, Instagram, Dropbox, Bitbucket, Mozilla Firefox, Discovery.

Приветственная страница нового проекта на Django
Приветственная страница нового проекта на Django

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

На Django можно создать и сайт полностью. Встроенный шаблонизатор и методы для генерации HTML-страниц позволяют писать фронтенд для простых сайтов. Для средних и крупных проектов с динамическим контентом возможностей Django недостаточно, поэтому этот фреймворк применяется в качестве бэкенда, а фронтенд разрабатывают на базе React, Angular или Vue.

Основное преимущество Django — быстрая разработка. Фреймворк не требует много времени на настройку конфигурации, позволяет программисту быстро создать MVP — тестовую версию продукта с базовым набором функций. Это нужно, чтобы проверить идею до того, как в нее будут вложены большие деньги. Подробнее — в статье «MVP: как проверить бизнес-гипотезу и получить финансирование».

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

Административная панель django admin
Программист создает нужные функции и с помощью административной панели Django admin управляет моделями — объектами, которые описывают хранящиеся в БД сущности

Для каких задач используем Django в проектах

Написать API

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

Работает это так: например, пользователь просматривает карточку товара в интернет-магазине и хочет знать, сколько штук осталось. На сервер отправляется запрос. API нужно для того, чтобы система правильно поняла запрос и в ответ отправила с сервера нужные данные — складские остатки из базы 1С. Тогда пользователь увидит на сайте, сколько единиц товара он может купить.

В зависимости от задач проекта разработчики реализуют API в формате REST, GraphQL, gRPC или Websocket API. На базе Django можно реализовать любой из этих типов API:

  • Наиболее распространенный способ обмена данными между клиентом и сервером по принципу «запрос — ответ» — REST. Библиотека django-rest-framework помогает легко реализовать REST API на базе Django.
  • Иногда REST не позволяет получить данные в удобной форме. В таком случае можно реализовать API c помощью GraphQL. Этот метод подойдет, если в одном ответе нужно сделать выборку и уточнить, какие именно данные нужны.
  • GRPC и Websocket API позволяют снизить нагрузку на сетевой трафик. Websocket также позволяет получать обновления в реальном времени. Эти протоколы используются реже, так как их разработка сложнее. Их применяют там, где это оправдано задачами.
Подключение REST API и GraphQL в Django
Подключение REST API и GraphQL в Django

Подключить сторонние сервисы

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

Сообщения о ошибках в работе сервиса от Telegram-бота
Можно связать сервис с Telegram —  написать бота, который отправляет уведомления администратору, когда возникают ошибки в работе сервиса

В Django это делается быстро. Нужно только подключить нужные расширения — дополнительные библиотеки.

Подключение дополнительных библиотек к Django
Подключение дополнительных библиотек к Django

Подключить базу данных

Базы данных — неотъемлемая часть практически любого интернет-сервиса. В них хранятся данные о пользователях, товарах, информация о заказах, картинки, видео. Django поддерживает популярные SQL-базы: MySQL, Postgres, Oracle, MariaDB.

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

Подключение баз данных
Конфигурация по умолчанию — default. Фреймворк Джанго позволяет задать несколько конфигураций, например добавить local

Управлять миграциями

Иногда требования проекта меняются и нужно вносить изменения в структуру баз данных — производить миграции. Например, добавить новые таблицы или удалить неиспользуемые поля. Миграции позволяют изменять текущее состояние баз под новые требования или возвращать модификации к исходному состоянию.

В Django организована удобная работа с миграциями. Обычно достаточно внести изменения в модель и вызвать команду makemigrations. Миграция создается автоматически в специальном файле, ее можно применить командой migrate.

Файл миграции Django
Так выглядит сгенерированный файл миграции Django

Обеспечить безопасность данных

Для обеспечения безопасности данных в Django предусмотрен набор встроенных компонентов Middleware. Также можно подключить дополнительные библиотеки. Эти инструменты позволяют настроить права доступа и защитить от атак персональные данные пользователей и другую информацию на веб-ресурсах. Например, с помощью библиотеки django-cors-headers можно разрешить доступ к ресурсу только с определенных доменов.

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

Джанго — это не единственный фреймворк на Питоне. Кроме Джанго есть Flask, Tornado, CherryPy, TurboGears и другие. У каждого свои возможности и ограничения. Орбитсофт работает со всеми фреймворками и поможет подобрать подходящий под конкретную задачу компании.

Для каких проектов стоит выбрать Django

  • Если проект среднего размера с монолитной архитектурой — это как раз то, что хорошо подходит для Django.
  • Нет четкого ТЗ — можно собрать «скелет» и выпустить MVP, а потом дополнить проект деталями.
  • Требуется быстрая разработка — готовые решения фреймворка позволяют сконцентрироваться на выполнении задачи и не отвлекаться на написание лишнего кода.
  • Нужно создать сервис CMS, CRM, email-рассылок.
  • Подключить к проекту сторонние сервисы: социальные сети, облачные хранилища и другие.
  • Настроить взаимодействие с базой данных. Django ORM — удобный и функциональный инструмент для работы с базами.
  • Реализовать API — готовые шаблоны и методы для создания различных видов API позволяют сделать это быстро.

Для каких проектов Django не подойдет

  • Если проект очень маленький или базы данных не используются. Django — монолит на Python, для простых приложений в нем много лишнего: компоненты работы со статикой, встроенная админка, функции для рендеринга темплейтов.
  • Если требуется низкоуровневая настройка или специфическая архитектура проекта — возможностей Django для этого недостаточно.

Пример из практики OrbitSoft

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

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

Для этого мы:

  • Подключили REST API для получения данных от обучающей платформы.
  • Настроили обработку полученных данных.
  • Подключили базу данных для хранения промежуточных результатов.
  • Реализовали фоновое выполнение отложенных задач через Celery — библиотеку для выполнения задач из очередей.
  • Подключили бота в Telegram для отправки сообщений об ошибках при выполнении задач.
Схема работы сервиса обработки данных

Получите ответ по смс

Ваше сообщение успешно отправлено!
Представьтесь пожалуйста
Укажите номер, на который придет ответ
Нажимая на кнопку, вы даете согласие
на обработку персональных данных.

Перезвонить вам, чтобы ответить на вопросы?

Когда с вами связаться?

Связаться по телефону:+7 499 321-59-32

Нажимая на кнопку, я принимаю условия политики и пользовательского соглашения

Фото эксперта
Дмитрий

Проектный менеджер

Получите ответ на ваш вопрос в любимом мессенджере

Выберите удобный мессенджер и начните диалог прямо сейчас

Telegram WhatsApp

Рассчитать стоимость проекта

Расскажите о вашем проекте, чтобы мы могли проконсультировать вас.

Напишите ваше имя
Укажите ваш email

Выберите удобный для вас способ связи

Мы сразу получим ваш запрос и поможем в решении проблемы

Написать в Telegram

Написать в WhatsApp

Позвонить нам