Найти тему

Лучшие фреймворки для веб-разработки на Python для начинающих

Оглавление
Статья подготовлена для студентов курса «Разработчик 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. Рассмотрим место юнит-тестирования в цикле разработки. Научимся подключать и интегрировать инструменты юнит-тестирования.