Упражнения по работе с фреймворком Flask
Настройка среды разработки и запуск простого веб-приложения
- Ознакомиться с содержанием страницы руководства фрэймворка Flask.
- Установить Python и фрэймворк Flask на вашу рабочую станцию в соответствии с руководством.
- Запустить сервер с минимальным приложением для фрэймворка Flask и обратиться к нему с помощью браузера.
- Разместить и запустить минимальное приложение на учебном сервере webarch.cs.prv (доступ по SSH из сети ПетрГУ с логином/паролем из вычислительной системы кафедры ИМО).
Необходимо учесть, что 1) несколько запущенных приложений не могут
использовать один и тот же порт для принятия соединений, поэтому, во
избежание коллизий с другими пользователями учебного сервера,
рекомендуется выбрать случайный номер порта между 8000 и 9000 и
указать его в параметрах запуска Flask-приложения 2) по-умолчанию
Flask-приложения принимают соединения только на локальном адресе
127.0.0.1
, чтобы соединения принимались на всех доступных
IP-адресах необходимо указать при запуске приложения адрес
0.0.0.0
. Доступные параметры запуска web-сервера, обслуживающего
Flask-приложения описаны в документации на API Flask.
Работа с запросом
- Модифицировать минимальное веб-приложение таким образом, чтобы по
запросу к его корневому ресурсу с заданным параметром name
(например
/?name=Alexander
) оно возвращало HTML-документ с приветствием «Hello, <значение параметра name>». - Создать веб-приложение, реализующее работу с ресурсом
/
, отражающим список людей следующим образом. Запрос к ресурсу с помощью метода POST с заданным параметромname
позволяет добавлять в комнату человека с именемname
. GET-запрос к ресурсу возвращает:- строку «The room is full of people who cares…» в случае, если комната пуста;
- строку «There are <список имен> in the room», причем список имен представляет собой строку <Имя1>, <Имя2>, … and <ИмяN>. При этом, для случая, когда в комнате только один человек должен использоваться вспомогательный глагол «is».
Для хранения состояния комнаты объявите в модуле переменную
встроенного типа list
(больше примеров работы со списками в
Python).
Для того, чтобы выполнить запрос типа POST можно
воспользоваться утилитой curl
:
$ curl -X POST <имя сервера>/?name=Alexander
С той же целью можно использовать режим разработки браузера, например для браузера Firefox: сначала записать запрос в строке браузера (по-умолчанию будет отправлен запрос типа GET) нажать F12, затем выбрать вкладку сеть, выбрать предыдущий запрос, нажать на кнопку «Изменить и снова отправить», указать в качестве метода «POST», нажать кнопку «Отправить».
Работа с несколькими ресурсами
- Создать веб-приложение, позволяющее создавать коробки. Приложение
должно предоставлять доступ к следующим ресурсам:
/
— простая веб-страница с кратким описанием приложения, которая в том числе содержит информацию о том, сколько коробок уже создано и гипер-ссылкой на ресурс/boxes
./boxes
— при запросеPOST
с параметрамиcolor
иname
создается новая коробка, помеченная заданным цветом и названием, причем цвет может быть только одним из следующего списка: red, green, blue, yellow, magenta.В случае, если в запросе передан неверный цвет или коробка с таким цветом или именем уже создана, приложение должно вернуть веб-страницу, содержащую сообщение об ошибке, а также текущий список коробок.
В случае, если коробка успешно создана, приложение должно вернуть страницу с «радостным» сообщением и также вывести текущий список коробок.
Запрос
GET
к данному ресурсу должен вывести список коробок.При выводе списка коробок каждая строка должна содержать имя коробки, выделенное соответствующим цветом (напоминание: при задании CSS-стиля элемента можно использовать символьные имена цветов, например
background: yellow;
).
- Модифицировать предыдущее приложение таким образом, чтобы в
каждую коробку можно было поместить некоторый предмет. Ресурсы
приложения должны обслуживаться следующим образом:
/boxes/<имя коробки>
— при запросе к этому ресурсу с помощью методаPOST
и с переданным параметромname
в коробку с заданным именем должен помещаться предмет с названиемname
. Если коробки с заданным именем не существует, приложение должно вернуть ответ с кодом 404 и сообщением об ошибке. В случае успешного выполнения запроса приложение должно вернуть обновленный список вещей в заданной коробке.Запрос
GET
к данному ресурсу должен выводить список вещей в коробке или ошибку со статусом 404 в случае, если заданной коробки не существует.Страница со списком вещей в коробке должна иметь фоновый цвет, соответствующий метке коробки, а также должна иметь заголовок с именем коробки. В случае, если какая-то вещь встречается в коробке несколько раз, в списке она не должна повторяться, но рядом с этой вещью в скобках должно быть указано количество таких вещей.
/boxes
— модифицируйте список коробок из предыдущего задания таким образом, чтобы каждый элемент являлся ссылкой на соответствующую коробку.
- Добавьте к веб-страницам, содержащим список коробок и список вещей в коробке HTML-форму, позволяющую обновить соответствующий список.
Для хранения списка коробок с их атрибутами, а также содержимого
коробок можно воспользоваться встроенной в Python структурой данных
«словарь» — dict
.