Step 4 (S-44885)

From Stepik Wiki
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/14832/step/4

Step 4 (S-44885) 1.png

[00:00 - 00:16] итак переходим собственно джанго джанго forester довольно большой кусок фреймворка то в принципе сопоставимы по размеру с контроллерами либо шаблонами


[00:16 - 00:36] а вот с него нет поэтому мы от изучаем одет а джанго каждая форма которой сохраняется а должна быть ну рекомендовано представлять я виде специального класса так же как


[00:36 - 00:53] каждая таблица наследуются от класса а models model аналогично каждая форма должна наследовать со специального класса forms for то есть для того чтобы создать новую форму танки нужно создать специальный класс


Step 4 (S-44885) 2.png

[00:53 - 01:11] а кстати такие класса часто хранятся forms и то есть в вашем а приложение рядом сфотал сферами сводов p а размещаясь платформ спит котором хранятся все форм


[01:11 - 01:28] а итак вы создаете новый класс дайте им какой то имя и наследует от класса forms точка for ну соответственно а полное имя django forms точку for


[01:28 - 01:44] а по аналогии с моделями по аналогии с модулями вы перечисляете поля только теперь тополями в таблице а вот здесь идет перечисление


[01:44 - 02:00] поляк стать очень похоже на поля модель но они из другого покет покет forbes а например в данной форме у нас 2 поля емейл сил печатью


[02:00 - 02:15] заказали дополнительные ограничения авто символов у 2 поля поля с названием меня слышишь


[02:15 - 02:30] мы указали специальный атрибут виджет атрибут вид определяет внешний вид данного поля когда оно будет представлена наша моей страничке


[02:30 - 02:48] в принципе вот эта часть является минимально необходимые для использования то есть вы создаете класс определяете в нем поля после чего форм уже можно использовать для например валидации да


[02:48 - 03:05] а что еще можно определить а форме помимо полей помимо поли форме можно определить метод клин метод а отвечает


[03:05 - 03:21] за общую за логику общий валидации форм а вообще зачем зачем нужны django форма немножко конечно зачем нужны данные формы основных значения джанго формы то чтобы а внутри них


[03:21 - 03:41] писать логику по валидации данных и сохранений сохранению данных чтобы а вот итоге мне пришлось помещать а во вьюшке сохранить контроллерах тонкими а формах размещаясь логика по валидации сохранения сохранению внешних да


[03:41 - 03:57] а вот метод клин в частности отвечает за валидацию все и форму в целом а например что здесь происходит а внутри метода клин мы видим


[03:57 - 04:14] вызывается некоторая функция и спам функцией спам предполагается что это какая то ваша функция в самостоятельно реализовать она магическим образом проверяет данные на то спама или нет возможно хоть какие то внешние сервера


[04:14 - 04:31] а возможно что то локально проверяет если а эта функция вернула ложь то есть че там случае стану вернула истины но постоянно проверять наличие спал а вы


[04:31 - 04:50] выбрасывается специально исключение а это исключение говорит о том что форма невалидные сохранять ее нельзя отлично а этот пример неполной поэтому давайте посмотрим следующий пример следующей форме которая его дополняет


Step 4 (S-44885) 3.png

[04:50 - 05:08] а это уже другая форма форма добавления поста у нее также 2 поля же самое для простоты мы сделали ну у нее другие методы нее метод есть


[05:08 - 05:25] причем заметьте и метода вместо соответствует названию в поле то есть а но выбрано не случайно оно выбрано именно по шаблону clean подчеркивание название поля и метод сейв


[05:25 - 05:42] а зачем нужен этот метод а соответствуют валидации 1 конкретного поля а что происходит внутри этого метода внутри этого метода


[05:42 - 05:57] ему никогда и не такие да да мы обращаемся к свойству клина дата дата это свойство объекта формы а в этом поле


[05:57 - 06:14] лежат данные формы уже прошедшие валидацию и очистку соответствии с определенными полями то есть в полях которую вы определяете форме они предполагают также некоторую логику


[06:14 - 06:31] валидация и очистки очистки данных ну например email сил будет проверять на то что действительно емейл а поэтому мы используем калину дата оттуда получаю мелочь


[06:31 - 06:48] значение поля место которое нам отправил пользователю уже очищенную соответствии с чак филдз никаких особых проверок и делают что вот далее мы вызываем функцию


[06:48 - 07:06] attic а другая наша магическая функция которая производит а поиск и цензурных выражений в тексте ну либо какую то другую эвристику по проверке сообщение этичность перед отправкой в блог


[07:06 - 07:22] если а проверка не прошла мы опять таки поднимая выбрасываем а заметив влезаешь лидеру указываем сообщение для пользователя и кот


[07:22 - 07:37] если ошибка будет проверяться а компьютер если проверка на этичность была пройдена


[07:37 - 07:52] тогда мы возвращаем сообщение + в конце сообщения добавляем некоторую фразу а на другом языке но это не критично


[07:52 - 08:11] итак а чем занимается метод клин клином не сошелся осуществляет дополнительную дополнительные валидацию поле мелочь а помимо этого он может видоизменить поле вместо того чтобы перевести его во внутренний формат


[08:11 - 08:28] а ну провести так называемую очистку в данном случае видоизменение заключается в добавлении текста но это пример такой скорее для демонстрации на практике типичным является преобразование в какие то внутренние объект например


[08:28 - 08:44] а если у нас есть мы и строки преобразуй в data data 9 в питоне а то есть методы clean они направлены на подготовку


[08:44 - 09:00] чистых данных которые уже может с которыми можно работать следующий метод метод save в методе save а содержится непосредственно логика а сохранение формы то есть изменения данных


[09:00 - 09:17] метод save он должен вызываться после проверки очистки поэтому предполагает что клина да действительно содержит очищенные данные а что здесь происходит здесь создается новый объект post он сохраняется


[09:17 - 09:36] и он возвращается сохранив все просто давайте запасную какие типы полей могут быть а внутри наших for то есть вы говорили что сказали что в форме в основном содержится а 4


Step 4 (S-44885) 4.png

[09:36 - 09:54] 4 поля а это метод клин общей это метод клин название поля и методы есть для сохранения а в большинстве случаев валидация правила валидации для семьи


[09:54 - 10:13] какие существуют встроенный поля а они во многом похожи на те поля которые есть в базе пример есть более field которая представляет себя флажок то есть да нет а есть часть ее вот это простое текстовое поле ввода туда может размещаться все что угодно например


[10:13 - 10:32] имя пользователя либо подпись какая то тоже текст в поле ввода но у него есть дополнительные правила валидации которая проверяет что введенные данные являются именно email пасворд


[10:32 - 10:48] этот текст в поле но оно будет выведена порода то есть а вместо символов и в этом текстовом поле увидите звездочки


[10:48 - 11:06] в остальном это обычный текстовый отчет позволяет выбрать несколько из нескольких вариантов то есть браузер это выглядит как а впадающей список date field data filter то выбор даты и файл field


[11:06 - 11:24] это загрузка файлов а как происходит валидация валидацией данных производства происходит в тот момент когда вы вызываете


Step 4 (S-44885) 5.png

[11:24 - 11:39] метод is valid for a


[11:39 - 11:58] при вызове метода срабатывает внутренняя логика формы которая делает а следующей проверке во 1 для каждого поля переданного в форме происходит проверка в соответствии с типом самого поля например а происходят


[11:58 - 12:16] проверка на то что если для данного поля например и цыц определяет определен метод к linux x x запускается этот метод который выполняет дополнительную проверку и может изменить значение поля в конце


[12:16 - 12:31] конце запускается метод клин который выполняет проверку всей формы в цел а этот метод нужен а в по той причине что не всегда можно проверить какие то поля в отдельности


[12:31 - 12:50] но простейший пример считается что допустим если у вас есть какой то интервал дат то есть дата которая должна быть меньше есть дата должна быть больше то есть вас есть ниндзя и маздой и нужно проверить пару да вместе что 1 больше другой это нельзя сделать


[12:50 - 13:06] неправильно так скажем делать при проверке 1 даты это логично делать при проверке всей формы целиком а собственно говоря в этих методах


[13:06 - 13:21] клин клином а для того чтобы получить уже проверили предыдущими способами данные используются поля клина да то это словарик в котором просто хранятся все данные формы


[13:21 - 13:39] прошедший уже предварительной очистки и в случае если а проверка не сработала то есть не пройдена метода clean x x x clean должны выбросить вылетаешь в европе


[13:39 - 13:55] а в таком случае форма будет отмечена как невалидные и метод is valid вернет false если а все методы клин


[13:55 - 14:06] отрабатывает нормально и никто не выбрасывает тогда форма будет валидной и метод этот вернет true