{"id":14188,"url":"\/distributions\/14188\/click?bit=1&hash=b87bef06f712c44d56a98ea57990630f922749c9c8e1fef26208f61656c88baa","title":"\u041a\u043e\u043c\u0430\u043d\u0434\u0438\u0440\u043e\u0432\u043a\u0430 \u0431\u0435\u0437 \u0435\u0434\u0438\u043d\u043e\u0433\u043e \u0431\u0443\u043c\u0430\u0436\u043d\u043e\u0433\u043e \u0447\u0435\u043a\u0430","buttonText":"\u0420\u0435\u0430\u043b\u044c\u043d\u043e?","imageUuid":"f2e9867f-33a1-5b24-a423-689dd09f77b5"}

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

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

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

Технология

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

Какие задачи решает

- Создание сервисов обработки данных

- Создание веб-приложений, социальных сетей и веб-чатов

- Разработка различных видов API

- Создание сервисов CMS, CRM, email-рассылок

Каким компаниям подойдет

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

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

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

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

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

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

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

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

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

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

Программист создает нужные функции и с помощью административной панели 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Если проект среднего размера с монолитной архитектурой — это как раз то, что хорошо подходит для Django.

  • Нет четкого ТЗ — можно собрать «скелет» и выпустить MVP, а потом дополнить проект деталями.

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

  • Нужно создать сервис CMS, CRM, email-рассылок.

  • Подключить к проекту сторонние сервисы: социальные сети, облачные хранилища и другие.

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

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

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

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

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

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

  • Подключили REST API для получения данных от обучающей платформы.

  • Настроили обработку полученных данных.

  • Подключили базу данных для хранения промежуточных результатов.

  • Реализовали фоновое выполнение отложенных задач через Celery — библиотеку для выполнения задач из очередей.

  • Подключили бота в Telegram для отправки сообщений об ошибках при выполнении задач.

Схема работы сервиса обработки данных

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

0
Комментарии
-3 комментариев
Раскрывать всегда
null