Python: Веб-разработка (Flask)
Теория: CRUD: Создание
Процесс создания круда пользователя включает минимум семь маршрутов. Два из них — просмотр списка и конкретного ресурса — мы уже разобрали. В этом уроке разберем следующие два, которые относятся к созданию сущности.
Создание сущности
Создание сущности подразумевает работу с модифицирующей формой, и как мы знаем, включает в себя два действия: отображение формы и обработка данных формы. За каждое из этих действий отвечает свой маршрут. Вот несколько примеров:
Пользователь
- GET
/users/new - POST
/users
Курс
- GET
/courses/new - POST
/courses
Сотрудник компании (пример вложенного маршрута)
- GET
/companies/3/users/new - POST
/companies/3/users
Разберем каждое действие подробнее.
Отображение формы
Обработчик
Шаблон
Содержимое обработчика сильно зависит от того, какой используется инструментарий. Если мы применяем билдеры формы, то обработчик создает форму как объект и отправляет его в шаблон. Билдер берет на себя огромное количество задач: обрабатывает вывод ошибок, занимается валидацией и подготовкой данных.
Особо умные билдеры знают про ту сущность, с которой они работают, и могут строить формы в полностью автоматическом режиме.
В нашем примере такого нет, поэтому все действия делаются руками. В форму мы передаем пустые данные, так как еще ничего не введено пользователем. Кроме данных в шаблон передается список errors. Это нужно, так как форма в шаблоне будет использоваться двумя обработчиками: одним только для отображения новой формы, другим — для отображения формы в случае наличия ошибок.
Обработка данных формы
Обработка формы нам уже знакома - извлекаем данные и валидируем. Если данные корректны, то выполняется основная логика обработчика – происходит сохранение школы в базу данных repo.save(data), а затем редирект на список школ с оповещением через флеш об успешном добавлении.
Если данные оказались не валидны, то этот обработчик рисует форму обработчика new со всеми его введенными данными (чтобы пользователю не пришлось вновь их вводить) и ошибками. Затем отправляет ее вместе с кодом ответа 422 — Unprocessable Entity.
На этом создание сущности заканчивается. Следующим шагом научимся ее обновлять.

