Книга «Разработка веб-приложений с использованием Flask на языке Python»
Если говорить о веб-разработке на Python, то в первую очередь вспоминается веб-фреймворк Django, на основе которого создано огромное количество как небольших сайтов, а также таких монстров как Instagram, сайт Mozilla, Bitbucket и множество других. Django хорош тем, что к нему «прилагаются батарейки», т.е. в библиотеку входит большое количество инструментов, которые могут понадобиться для построения движка сайтов разных типов — это пакеты для работы с базой данных, для создания профилей пользователей и их авторизации, для создания форм по объектом данных и т.д. Это удобно, но из-за этого сам фреймворк становится достаточно тяжелый, а при его обновлении каждый раз что-нибудь ломается. К тому же, если вас не устраивает какая-то часть фреймворка, то заменить ее на аналог может быть тяжело.
В противоположность тяжеловесному Django был создан микрофреймворк Flask, пропагандирующий противоположный подход — сам Flask является очень минималистичным, а многие возможности в него добавляются с помощью расширений. Если вас не устраивает одно расширение, вы можете его заменить на аналогичное другое. Обновление используемых библиотек поэтому тоже теоретически должно проходить более гладко.
Я был приятно удивлен, узнав, что 2016 году была переведена книга Мигеля Гринберга «Flask Web Development», которая на русском языке стала называться «Разработка веб-приложений с использованием Flask на языке Python».
Это небольшая книга на 270 страниц чуть меньше стандартного формата. В этой книге автор показывает основы использования библиотеки Flask и множества расширений для него. Эта книга не о принципах веб-программирования — подразумевается, что вы уже имеете представление о протоколе HTTP, HTML, веб-формах, базах данных, куках и т.п. вещах. Скорее всего больше всего пользы от этой книги получат те разработчики, которые уже знакомы с Django или еще каким-нибудь веб-фреймворком.
Во время чтения книги у меня сложилось впечатление, что автор описывает как из Flask с помощью расширений создать Django, хотя открытым текстом об этом нигде не сказано. Во Flask нет ORM (Object-Relational Mappers) для работы с базами данных — возьмем SQLAlchemy и расширение Flask-SQLAlchemy. Нет классов для создания форм — подключим расширение Flask-WTF. Когда все это собирается вместе, то по принципу использования все это очень напоминает Django. Хотя мне идея такого конструктора нравится.
В этой книге автор сосредоточился в первую очередь на использовании Flask и библиотек, не углубляясь в особенности их работы. Мне больше нравится, когда в книге автор берется за какой-то компонент фреймворка и разбирает его «до косточек», сразу описывая все особенности и возможные проблемы. Здесь компоненты описаны достаточно поверхностно, а особенности и проблемы, о которых автор упомянет вскользь, могут встретиться спустя несколько глав.
Книга разбита на три части. В первой части рассказывается об основных элементах практически любого веб-приложения: как работать с шаблонами, как создавать веб-формы и обрабатывать данные, полученные от пользователя, как работать с базами данных, отправлять электронную почту. Сюда же входит глава о том, как можно упорядочивать файлы в большом веб-приложении.
Во второй части автор с чистого листа начинает создавать движок для блогов (наподобие LiveJournal, но без древовидных комментариев). Создаваемый движок постепенно обретает возможности для блоггинга, авторизации пользователей, администрирования постов, создания комментариев, добавления пользователей в друзья и создание ленты друзей. В качестве фронтенда используется Bootstrap, но о нем говорится лишь вскользь, поскольку книга посвящена бэкенду. В завершение делается небольшой REST API для сайта.
Именно во второй части и описываются некоторые проблемы и особенности, с которыми придется столкнуться при использовании той или иной библиотеки.
Третья часть книги посвящена тестированию и развертыванию приложения. Тесты пишутся с помощью стандартной библиотеки unittest, а потом добавляются тесты в браузере с помощью Selenium.
Что касается развертывания, то здесь упор сделан на развертывании с помощью сервиса Heroku.
В целом книга полезная и ее вполне можно использовать для того, чтобы начать работать с Flask, и потраченного на нее времени она стоит, но на библию по Flask она не тянет. Хотелось бы, чтобы некоторые вопросы были описаны более подробно. Я бы этой книге поставил оценку 4.
В марте 2018 вышло второе издание этой книги на английском языке. Судя по оглавлению, ничего принципиально нового там не появилось.
> узнав, что 2016 году была переведена
26 ноября 2018, 3:33 ппПочему в 2016? В самой книге написано 2014.
Похоже, что ее переиздавали. На сайтах пишут где-то 2014, где-то 2016. У меня в книге написано 2016.
26 ноября 2018, 6:14 ппНа хабре есть относительно свежий (2018) перевод этой книги: https://habr.com/ru/post/346306/
15 августа 2019, 7:44 дп