66 Ручная валидация форм

🚀 Add to Chrome – It’s Free - YouTube Summarizer

Category: N/A

Building WordCloud ...

Summary

No summary available.

Transcript

00:00

Итак на предыдущем уроке мы научили нашу форму отправлять пост запрос и летит этот пост запрос на то же самое представление то есть наша функция индекс она будет Отдавать вот это отображение То есть когда мы обновляем страничку мы будем попадать именно в эту

00:15

функцию и тоже самое Когда мы будем отправлять данные с этой формы мы опять же будем попадать в эту функцию Вот видите у нас точка снова Остановилась и видим что в атрибуте пост есть данные и Соответственно в этом

00:31

представлении У нас есть две ситуации Либо мы просто отдаём отображение нашей формы Либо мы принимаем значение и чтобы отловить ситуацию когда мы данные принимаем смотрите у requests есть такой атрибут как метод вот Он написан и вот

00:46

если метод у нас будет Post то есть равен строке пост с большой буквы то мы имеем дело именно с отправкой данных Значит мы пишем такое условие если request точка метод равен пост то значит мы можем с вами доставать

01:03

данные из этого поста соответственно обращаться к атрибутам из нашей формы Вот давайте получим name это как обычный словарик мы это делали на предыдущем уроке Значит мы можем это имя вывести и Давайте также

01:20

выполним дирек мы его тоже вспоминали на предыдущем уроке поэтому я ещё не удалял класс http respon Red и кинем нас на путь done он будет обозначать что у нас отзыв успешно с вами обработан вот

01:36

осталось этот путь добавить в urls Итак давайте вверху я его пропишу функция будет одноимённая done её нужно импортировать и конечно же создать Так давайте скопирую весь код выполнение программы я могу

01:53

отпустить нажимаю этот треугольник Итак функция называется done и она у нас будет просто рендерить новый шаблон угадайте как он будет называться Да верно тоже Дан мы можем скопировать вот нашу форму даём

02:10

название здесь вот убираем всё кроме заголовка то есть оставим заголовок H2 и уже пишем что Отзыв не нужно оставлять А ваш отзыв успешно обработан Ну вот Вот так мы с вами будем

02:27

выполнять обработку обновляем страни давайте я остановлю здесь точку останова вводим имя и нажимаем отправить Вот мы оказываемся в нашей точке останова получаем имя его выводим на

02:43

экран и делаем Директ и вот смотрите я могу здесь точку основу поставить в нашей функции Да нажимаю треугольник и Вот видите Мы здесь с вами оказываемся нажимаем вновь треугольник идм в браузер и видим наш путь изменился Перри на что стоит обратить

03:00

внимание давайте я отправлю данные при помощи Post вот мы его принимаем видим что имя и фамилия у нас проставлены нажимаю треугольник и смотрите когда мы делаем перенаправление через класс http respon redirect то мы уже имеем дело с

03:16

другим методом Обратите внимание его тип Get И как вы понимаете все данные у нас из поста пропадают вот поэтому здесь Достучаться уже до данных которые мы отправляли мы не имеем возможности Вот на это Обратите

03:33

внимание также ещё смотрите С какой проблемой мы с вами можем столкнуться Вот Мы открываем нашу форму оставим её пустой и нажмём отправить и как вы понимаете У нас придут все наши поля пустые и мы пользователю после этого

03:48

успешно скажем что его отзыв обработан Но на самом деле такой ситуации не должно быть то есть мы должны поля нашей формы как-то минимально валидировать валидация - это значит мы должны делать соответствующие проверки То есть например логично проверить что имя

04:04

фамилия Ну и какй отзыв не должны быть пустыми и в случае если пользователь всё-таки оставляет эти поля пустые мы должны ему об этом как-то сообщить как валидацию можно сделать сейчас ну во-первых мы можем вот наше значение name

04:19

проверить если его длина равна нулю то мы с вами будем делать следующее смотрите я скопирую вот эту строчку она возвращала HTML нашей формы пустой вот мы будем пользователю вновь показывать нашу форму но вспоминаем есть атрибут

04:37

контекст Мы в неё передадим какую-то логическую переменную имя мы сами выбираем Давайте назову её got Error то есть мы тем самым получили ошибку и ставим её в значение True То есть когда имя будет пустое мы будем передавать что

04:53

да мы получили ошибку и конечно же надо сделать вот так во всех остальных случаях мы должны не передавать ошибку Ну то есть говорить о том что ошибки никакой не было И вот теперь мы этой переменной можем спокойно воспользоваться в нашем шаблоне Давайте

05:10

в самом верху формы то есть внутри формы но после токена я выполню проверку То есть я спрошу если значение нашей переменной которые намм доступно в шаблоне будет

05:26

True то мы Давайте сразу закрою блок If внутри этого блока будем размещать параграф и в нём говорить что нельзя вводить пустое

05:42

имя давайте обновим нашу страничку нажимаем отправить так вот мы сюда попадаем имя у нас пустое конечно же мы идём вот в эту ветку Давайте нажму треугольник в принципе точка снова нам уже не понадобится и видите мы получаем

05:58

с вами Вот этот параграф если мы вводим Свами имя то мы отправляемся на нашу страничку да Ну Вот соответственно если мы обновляем страничку вот в самом начале когда мы только на эту страничку приходим то мы

06:14

идём вот по этой ветки и соответственно ошибки у нас никакой нет и параграф у нас в шаблоне не выводится вот так вот можно минимально валидацию сделать с вашим полем но здесь возникает следующая проблема Если вы хотите добавить дополнительную валидацию

06:30

Ну например сказать что длина вашего Поля не должна быть например больше 20 символов то вы можете добавить это условие но у нас смотрите что сейчас произойдёт Давайте обновим страничку Вот так мы получаем с вами ошибку и вот так

06:48

вот мы с вами тоже получим ошибку но текст ошибки у нас будет один и тот же Хотя валидация Рая и вот здесь нам нужно придумать с вами например второй флаг то есть вторую такую переменную и тоже её можно проставлять в True или

07:03

false и потом отлавливать если вот эта переменная у нас в т то выводить один текст если другая переменная истина то выводим другое сообщение так можно но это уже усложняет код и также Стоит подумать наперёд Ведь мы сейчас

07:20

проверяем с вами только одно поле нашей формы А у нас видите ещё есть поля в этой форме и их тоже нужно валидировать вот поэтому валидация при в таких формах которые мы с вами вручную пишем это дело не очень приятное конечно же здесь может

07:35

прийти на помощь сам HTML там есть определённые теги которые позволяют оставить поля обязательными они отчасти нам помогут решить проблему но дело в том что мы учим Python и хотим вообще не касаться HTML то есть с ним вообще никак не работать и поэтому нам нужно с вами

07:52

уйти от написание форм вручную на голом htm и перейти к изучению форм при помощи Джанги ведь джанга предоставляет свои собственные формы в котором можно указывать как тип вашего поля и также проверки которые нужно чтобы это поле проходило и на следующем уроке мы с вами

08:10

приступим к изучению именно форм Джанги Не забывайте что для этого курса по Джанги есть а Telegram чат Там у нас активно ведутся беседы и вы можете быстро получить ответ на свой вопрос Ну а сегодня я с вами прощаюсь и увидимся в следующем видео Всем пока