0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Цикл запрос-обработка-ответ включает множество элементов, которые идентичны для всех сайтов. Поэтому возникли фреймворки - специализированные библиотеки, которые определяют структуру программы. Этим они отличаются от обычных библиотек. Благодаря фреймворкам можно сосредоточиться на логике сайта, а не продумывать базовую архитектуру или кодирование вспомогательных инструментов.</p>
1
<p>Цикл запрос-обработка-ответ включает множество элементов, которые идентичны для всех сайтов. Поэтому возникли фреймворки - специализированные библиотеки, которые определяют структуру программы. Этим они отличаются от обычных библиотек. Благодаря фреймворкам можно сосредоточиться на логике сайта, а не продумывать базовую архитектуру или кодирование вспомогательных инструментов.</p>
2
<p>Веб-фреймворки подразделяются на две большие группы: фреймворки и микрофреймворки. Микрофреймворки устроены проще и содержат только минимально необходимую обвязку, чтобы комфортно работать в архитектуре HTTP - запрос-ответ. Они идеально подходят для обучения, потому что просты в эксплуатации и не отвлекают от главного.</p>
2
<p>Веб-фреймворки подразделяются на две большие группы: фреймворки и микрофреймворки. Микрофреймворки устроены проще и содержат только минимально необходимую обвязку, чтобы комфортно работать в архитектуре HTTP - запрос-ответ. Они идеально подходят для обучения, потому что просты в эксплуатации и не отвлекают от главного.</p>
3
<p>Один из наиболее популярных python-микрофреймворков -<a>Flask</a>. В этом уроке познакомимся с ним и узнаем его возможности. Также научимся создавать минимальное Flask-приложение и запускать его с помощью development-сервера. В конце расскажем, как включить режим отладки, чтобы сообщения об ошибках отображались прямо в браузере в удобном для просмотра виде.</p>
3
<p>Один из наиболее популярных python-микрофреймворков -<a>Flask</a>. В этом уроке познакомимся с ним и узнаем его возможности. Также научимся создавать минимальное Flask-приложение и запускать его с помощью development-сервера. В конце расскажем, как включить режим отладки, чтобы сообщения об ошибках отображались прямо в браузере в удобном для просмотра виде.</p>
4
<h2>Возможности Flask</h2>
4
<h2>Возможности Flask</h2>
5
<p>Микрофреймворк Flask умеет:</p>
5
<p>Микрофреймворк Flask умеет:</p>
6
<ul><li>Разбирать запросы и производить маршрутизацию по адресу, глаголу HTTP, параметрам запроса</li>
6
<ul><li>Разбирать запросы и производить маршрутизацию по адресу, глаголу HTTP, параметрам запроса</li>
7
<li>Формировать ответы на запросы, которые содержат нужные статус, заголовки, cookies, данные в необходимом формате, например: текст, JSON</li>
7
<li>Формировать ответы на запросы, которые содержат нужные статус, заголовки, cookies, данные в необходимом формате, например: текст, JSON</li>
8
<li>Работать с сессиями</li>
8
<li>Работать с сессиями</li>
9
<li>Удобно вызывать шаблонизатор для формирования ответа</li>
9
<li>Удобно вызывать шаблонизатор для формирования ответа</li>
10
</ul><p>При этом с помощью Flask нельзя:</p>
10
</ul><p>При этом с помощью Flask нельзя:</p>
11
<ul><li>Работать с данными в базе данных - не содержит встроенной ORM</li>
11
<ul><li>Работать с данными в базе данных - не содержит встроенной ORM</li>
12
<li>Формировать интерфейс администратора - administrator interface, админка</li>
12
<li>Формировать интерфейс администратора - administrator interface, админка</li>
13
<li>Обрабатывать формы ввода данных и валидацию этих данных</li>
13
<li>Обрабатывать формы ввода данных и валидацию этих данных</li>
14
</ul><p>Чтобы добавить эти и другие возможности в приложение, нужно подключить внешние библиотеки. Ознакомиться с полным перечнем библиотек и их возможностями можно на странице<a>pypi.org</a>.</p>
14
</ul><p>Чтобы добавить эти и другие возможности в приложение, нужно подключить внешние библиотеки. Ознакомиться с полным перечнем библиотек и их возможностями можно на странице<a>pypi.org</a>.</p>
15
<h2>Создание минимального Flask-приложения</h2>
15
<h2>Создание минимального Flask-приложения</h2>
16
<p>Чтобы создать минимальное Flask-приложение, нужно выполнить следующие шаги:</p>
16
<p>Чтобы создать минимальное Flask-приложение, нужно выполнить следующие шаги:</p>
17
<ol><li>Создать новый python-проект в директории hexlet-flask-example и добавить в зависимости Flask</li>
17
<ol><li>Создать новый python-проект в директории hexlet-flask-example и добавить в зависимости Flask</li>
18
<li>Создать в корне директории модуль example.py со следующим содержимым:</li>
18
<li>Создать в корне директории модуль example.py со следующим содержимым:</li>
19
</ol><p>Разберем код выше подробнее:</p>
19
</ol><p>Разберем код выше подробнее:</p>
20
<ol><li><p>Импортируем класс-инициализатор Flask. Его экземпляр и будет нашим WSGI-приложением:</p>
20
<ol><li><p>Импортируем класс-инициализатор Flask. Его экземпляр и будет нашим WSGI-приложением:</p>
21
</li>
21
</li>
22
<li><p>Инстанцируем экземпляр, где класс принимает первым аргументом имя модуля нашего приложения __name__. Это нужно, чтобы Flask знал, где искать шаблоны и статические файлы:</p>
22
<li><p>Инстанцируем экземпляр, где класс принимает первым аргументом имя модуля нашего приложения __name__. Это нужно, чтобы Flask знал, где искать шаблоны и статические файлы:</p>
23
</li>
23
</li>
24
<li><p>Используем декоратор route(), который связывает функцию-обработчик с конкретным адресом нашего сайта. Об обработчиках и роутинге поговорим в следующих уроках:</p>
24
<li><p>Используем декоратор route(), который связывает функцию-обработчик с конкретным адресом нашего сайта. Об обработчиках и роутинге поговорим в следующих уроках:</p>
25
</li>
25
</li>
26
<li><p>Функция-обработчик возвращает ответ, который выведется в браузере:</p>
26
<li><p>Функция-обработчик возвращает ответ, который выведется в браузере:</p>
27
</li>
27
</li>
28
</ol><h2>Запуск с помощью development-сервера</h2>
28
</ol><h2>Запуск с помощью development-сервера</h2>
29
<p>В разработке удобнее использовать специальный сервер, который поставляется вместе с Flask. Он не подходит для серьезного использования, но у него есть полезные качества для разработки. Он позволяет просматривать логи запросов и удобно отображает ошибки, которые возникают во время исполнения.</p>
29
<p>В разработке удобнее использовать специальный сервер, который поставляется вместе с Flask. Он не подходит для серьезного использования, но у него есть полезные качества для разработки. Он позволяет просматривать логи запросов и удобно отображает ошибки, которые возникают во время исполнения.</p>
30
<p>Запустим приложение встроенным сервером. Введем в терминале следующие команды:</p>
30
<p>Запустим приложение встроенным сервером. Введем в терминале следующие команды:</p>
31
<p>Здесь команда задает модуль, в котором объявлен объект WSGI-приложения и запускает сервер разработчика - developing server. Создадим файл<em>Makefile</em>в корне проекта и добавим туда задачу start:</p>
31
<p>Здесь команда задает модуль, в котором объявлен объект WSGI-приложения и запускает сервер разработчика - developing server. Создадим файл<em>Makefile</em>в корне проекта и добавим туда задачу start:</p>
32
<p>Выполним запуск:</p>
32
<p>Выполним запуск:</p>
33
<p>Вывод будет таким:</p>
33
<p>Вывод будет таким:</p>
34
<p>Flask предупреждает, что в данный момент запущен сервер разработчика, а в реальных условиях понадобится "промышленный" WSGI-сервер - production WSGI server.</p>
34
<p>Flask предупреждает, что в данный момент запущен сервер разработчика, а в реальных условиях понадобится "промышленный" WSGI-сервер - production WSGI server.</p>
35
<p>Пока мы не остановим сервер нажатием Ctrl+C, в браузере по адресу http://127.0.0.1:8000/ можно будет увидеть текст "Welcome to Flask!".</p>
35
<p>Пока мы не остановим сервер нажатием Ctrl+C, в браузере по адресу http://127.0.0.1:8000/ можно будет увидеть текст "Welcome to Flask!".</p>
36
<h2>Режим отладки</h2>
36
<h2>Режим отладки</h2>
37
<p>Если в приложении случится ошибка, то мы увидим заготовленное сообщение с подобным текстом: "Internal Server Error". Но во время разработки хочется видеть вывод ошибки, и чтобы была возможность не перезапускать руками сервер при каждом изменении кода. И development-сервер это умеет, нужно только включить режим отладки:</p>
37
<p>Если в приложении случится ошибка, то мы увидим заготовленное сообщение с подобным текстом: "Internal Server Error". Но во время разработки хочется видеть вывод ошибки, и чтобы была возможность не перезапускать руками сервер при каждом изменении кода. И development-сервер это умеет, нужно только включить режим отладки:</p>
38
<p>Изменим тогда и команду в<em>Makefile</em>:</p>
38
<p>Изменим тогда и команду в<em>Makefile</em>:</p>
39
<p>Когда мы перезапустим сервер, то вывод будет немного отличаться:</p>
39
<p>Когда мы перезапустим сервер, то вывод будет немного отличаться:</p>
40
<p>Теперь включен режим отладки - "Debugger is active!". С включенным отладчиком сообщения об ошибках будут отображаться прямо в браузере в удобном для просмотра виде. Про встроенный во Flask отладчик Werkzeug расскажем подробнее позднее.</p>
40
<p>Теперь включен режим отладки - "Debugger is active!". С включенным отладчиком сообщения об ошибках будут отображаться прямо в браузере в удобном для просмотра виде. Про встроенный во Flask отладчик Werkzeug расскажем подробнее позднее.</p>
41
<p>Также теперь все изменения в коде будут автоматически перезапускать сервер. Например, попробуйте изменить выводимый текст на ‘Hello, Hexlet!’. Как только вы сохраните код, сервер перезагрузится, и вы увидите в браузере новое сообщение.</p>
41
<p>Также теперь все изменения в коде будут автоматически перезапускать сервер. Например, попробуйте изменить выводимый текст на ‘Hello, Hexlet!’. Как только вы сохраните код, сервер перезагрузится, и вы увидите в браузере новое сообщение.</p>
42
<h2>Вывод</h2>
42
<h2>Вывод</h2>
43
<p>В этом уроке мы познакомились с одним из наиболее популярных python-микрофреймворков - Flask, а также узнали его возможности. Еще мы научились создавать минимальное Flask-приложение и запускать его с помощью development-сервера. Также мы знаем, как включить режим отладки, чтобы сообщения об ошибках отображались прямо в браузере в удобном для просмотра виде.</p>
43
<p>В этом уроке мы познакомились с одним из наиболее популярных python-микрофреймворков - Flask, а также узнали его возможности. Еще мы научились создавать минимальное Flask-приложение и запускать его с помощью development-сервера. Также мы знаем, как включить режим отладки, чтобы сообщения об ошибках отображались прямо в браузере в удобном для просмотра виде.</p>