426
Глава 19 • Учетные записи пользователей
пользователь уже заполнил и отправил форму, его браузер отправляет запрос
POST. В зависимости от типа запроса мы определяем, запросил ли пользователь
пустую форму (запрос GET) или предлагает обработать заполненную форму (за-
прос POST).
Метод запроса — GET или POST — проверяется в точке
. Если метод запроса от-
личен от POST, вероятно, используется запрос GET, поэтому необходимо вернуть
пустую форму (даже если это запрос другого типа, это все равно безопасно). Мы
создаем экземпляр
TopicForm
, сохраняем его в переменной
form
и отправляем
форму шаблону в словаре
context
. Так как при создании
TopicForm
аргументы
не передавались, Django создает пустую форму, которая заполняется пользова-
телем.
Если используется метод запроса POST, выполняется блок
else
, который об-
рабатывает данные, отправленные в форме. Мы создаем экземпляр
TopicForm
и передаем ему данные, введенные пользователем, хранящиеся в
request.POST
.
Возвращаемый объект
form
содержит информацию, отправленную пользова-
телем.
Отправленную информацию нельзя сохранять в базе данных до тех пор, пока она
не будет проверена
. Функция
is_valid()
проверяет, что все обязательные поля
были заполнены (все поля формы по умолчанию являются обязательными), а вве-
денные данные соответствуют типам полей — например, что длина текста меньше
200 символов, как было указано в файле
models .py
в главе 18. Автоматическая про-
верка избавляет нас от большого объема работы. Если все данные действительны,
можно вызвать метод
save()
, который записывает данные из формы в базу
данных.
После того как данные будут сохранены, страницу можно покинуть. Мы исполь-
зуем вызов
redirect()
для перенаправления браузера на страницу
topics
, на
которой пользователь увидит только что введенную им тему в общем списке тем.
Переменная
context
определяется в конце функции представления
, а страница
строится на базе шаблона
new_topic .html
, который будет создан на следующем шаге.
Код размещается за пределами любых блоков
if
; он выполняется при создании
пустой формы, а также при определении того, что отправленная форма была не-
действительной. Недействительная форма включает стандартные сообщения об
ошибках, чтобы помочь пользователю передать действительные данные.
Шаблон new_topic
Теперь создадим новый шаблон с именем
new_topic .html
для отображения только
что созданной формы:
Достарыңызбен бөлісу: