HTML Diff
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>