Статья подготовлена для студентов курса «Разработчик Python» в образовательном проекте OTUS.
Как известно, Python сегодня используется почти везде, включая веб-разработку. При этом существуют фреймворки, позволяющие буквально за несколько дней «поднять» сайт. Речь идёт о full stack-фреймворках, работающих по принципу «всё включено». И действительно, в них есть всё, что надо для создания полноценного приложения, поэтому вам не придётся искать для каждой подзадачи подходящую библиотеку. В результате собрать готовое и полноценно работающее приложение сможет даже начинающий программист. Как раз о таких фреймворках мы и поговорим в нашей статье.
Django
Высокоуровневый фреймворк, архитектура которого выстроена таким образом, чтобы экономить ваши силы и время, а в итоге — деньги заказчиков. Главные принципы Django-философии — DRY и rapid development, стимулирующие переиспользование кода и снижающие его избыточность.
Особенности:
— контроль версий для БД (миграции);
— свой движок шаблонов;
— ORM;
— URL-маршрутизация;
— поддержка web-серверов, аутентификации и интернационализации.
Достоинства:
— множество библиотек (многое уже написано — только импортируйте);
— большое сообщество и исчерпывающая документация (всегда найдёте ответы на свои вопросы и разберётесь в проблеме);
— наличие масштабируемости (начав с малого, вы можете существенно расширить проект в случае надобности).
Недостатки:
— WebSockets не поддерживается из коробки, следовательно, Django — не лучший вариант для работы в реал-тайме;
— недостаточная гибкость (готовые библиотеки — это, разумеется, круто, но гибкость от этого, увы, снижается).
Успешные примеры использования:
• https://www.instagram.com/;
• https://www.spotify.com/.
Pyramid
Если интересует более минималистичный фреймворк, обратите внимание на Pyramid. Он тоже подходит для проектов любого размера и имеет много полезных функций, включая возможность масштабирования небольших сайтов под возрастающую нагрузку.
Особенности:
— наличие удобных инструментов для работы со статичными ассетами;
— генерация URL;
— предикаты и рендереры.
Преимущества:
— повышенная гибкость (любой компонент можно заменить);
— удобные Ajax-запросы (система декораторов и представлений позволяет отправлять XHR-запросы без особых усилий со стороны разработчика);
— поддержка SQLAlchemy (обеспечивает удобство работы с БД даже при сложных запросах).
Недостатки:
— на развёртывание и подготовку уходит много времени;
— чтобы прочувствовать возможности гибкости фреймворка и эффективно заниматься кастомизацией, поверхностных знаний Pyramid недостаточно;
— если речь идёт о простых приложениях, то SQLAlchemy бывает слишком громоздкой.
Успешные примеры использования:
• https://www.charte.ca/;
• https://www.easyblognetworks.com/;
• http://www.substanced.net/.
TurboGears
Опенсорсный фреймворк, обеспечивающий быструю разработку веб-приложений, работающих с данными. Поддерживает SQLAlchemy, WebOb, Genshi, Repoze, поэтому отлично подходит для проектов, требующих хорошей поддержки БД.
Особенности:
— поддержка горизонтального секционирования данных;
— поддержка MVC-архитектуры и нескольких БД одновременно;
— интеграция с JS-библиотекой MochiKit;
— ToscaWidgets;
— валидация посредством FormEncode;
— шаблоны PasteScript.
Достоинства:
— хорошая гибкость (подходит как для быстрого прототипирования, так и для крупных проектов);
— неплохая расширяемость (вы можете создавать свои плагины либо расширять функциональность имеющихся).
Основной недостаток вытекает из достоинства — возможностей для расширения настолько много, что в них просто запутаться…
Успешные примеры использования:
• https://allura.apache.org/;
• http://www.umbrellasatkasmisons.com/.
Flask
WSGI-фреймворк, подходящий и для простых, и для сложных сайтов. Совместим со сторонними библиотеками, включает в себя много расширений.
Особенности:
— встроены быстрый дебаггер и dev-сервер;
— шаблоны Jinja2;
— поддерживаются REST-запросы;
— обеспечивается совместимость с любой ORM;
— безопасные cookies для управления сессией на клиенте;
— поддержка unit-тестов;
— соответствие WSGI 1.0.
Достоинства:
— понятность и минималистичность (в логике работы разобраться несложно);
— быстрое прототипирование (инструменты, необходимые для создания прототипа, функционируют непосредственно из коробки).
Что касается недостатков, то Flask считается довольно низкоуровневым фреймворком, то есть требования к уровню разработчика выше, если сравнивать с другими фреймворками из списка. Если хотите сразу делать сайты, не выбирая, что находится под капотом, выбирайте другой инструмент.
Примеры успешного использования:
• https://rainist.com/;
• https://www.netflix.com/;
• https://www.lyft.com/.
Tornado
Это асинхронный фреймворк с неблокирующим обменом данными, что позволяет одновременно поддерживать много пользовательских соединений. Отличный вариант, если надо подолгу поддерживать соединение с каждым пользователем.
Особенности:
— собственный механизм аутентификации (но можно подключить и сторонние решения);
— поддерживает переводы и локализации;
— работает в реал-тайме.
Примеры успешного использования:
• https://uploadcare.com/.
6 августа в 20:00 пройдёт бесплатный вебинар «TDD C PYTEST И БЕЗ НЕГО»
Познакомимся с инструментами юнит-тестирования в python. Рассмотрим место юнит-тестирования в цикле разработки. Научимся подключать и интегрировать инструменты юнит-тестирования.