Step 5 (S-44887)

From Stepik Wiki
Jump to: navigation, search

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

Step 5 (S-44887) 1.png

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


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


[00:33 - 00:52] по сути движка состоит из 2 частей с мы видим в котором проверяется метод запроса если метод запросов post значит а происходит submit формы то есть форма отправляется


[00:52 - 01:09] противном случае если метод запросы гет другие пользуются редко а это означает что форма только отображается то есть пользователь нажал кнопку добавить post им нужно показать форму добавления


[01:09 - 01:27] старую ситуации когда форма просто добавляется мы создаем экземпляр нашего класса вот класс который мы создали поместил файлик форум спи а вот мы создаем новый экземпляр это так называемая а


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


[01:44 - 02:03] теперь посмотрим что происходит когда этот запросов post то есть 1 век а мы также создаем экземпляр формы но при этом 1 аргументом мы передаем форму post


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


[02:21 - 02:37] в момент вызова метода is valid происходит очистка валидация форм то есть вызываются всякие методы clear что то там метод просто клин


[02:37 - 02:56] предварительно срабатывает обработка всех полей то есть делается валидации всех полей и а в результате если все произошло хорошо возвращается истины а в тот момент когда я вернулся истинно то есть с форума


[02:56 - 03:11] была проверена оказался валидный у нее в злая метод save метод save а сохраняет уже очищенные данные в базу значит новый объект post


[03:11 - 03:26] это полноценная модель которая сохранена в базу не есть идентификатор и для нее мы можем построить ну где фактически может быть написать в 1 строчку помещались


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


[03:42 - 03:59] в этом месте можно было бы передать некоторые сообщения об ошибке у сообщение об успехе то есть например добавить некоторой параметров окей 1


[03:59 - 04:15] и поэтому get параметр мы могли бы показать какой то сообщение а на странице 1 поста могли бы подсказать сообщение о том что успешно добавлен но в данном случае это несколько избыточно к тому что пользователь видит


[04:15 - 04:34] с новой страницы понимает что он добавлен успешно поэтому в этом нет необходимости это успел успешно сценарий если форма была квалифицирована успешно завершая нашу работу редиректом 302


[04:34 - 04:51] на новый форум что происходит если а форм вылет вернул flaws если форму или отварной вот эта ветка вложенной оно не отрабатывает и мы проваливаемся вот сюда


[04:51 - 05:07] а то есть мы провалимся нас опять на отрисовку for но при этом объект форма у нас здесь


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


[05:23 - 05:40] произошла валидации форма и внутри формы хранятся все сообщения об ошибках привязки к каждому полю поэтому мы можем отобразить сообщение а об ошибках пользоваться чтобы он знал что ему нужно исправлять


[05:40 - 05:59] теперь посмотрим как объект форма используется внутри шаблонизатор то есть как нужно работать над этим параметрам форм шаблоне а вариант для ленивых джанго


Step 5 (S-44887) 2.png

[05:59 - 06:15] объектов форм django а есть методы которые позволяют преобразовать форму в готовый суп а есть 3 варианта зверь сп ст


[06:15 - 06:30] а здесь все довольно просто то есть какая то верстка по умолчанию что моль структур есть 3 варианта с


[06:30 - 06:46] а маркированный список п это через параграфы то есть каждое поле будет в отдельном параграфе и table через таблицу вы можете использовать а 1 из этих методов


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


[07:04 - 07:23] удали использует все преимущества которое есть замка моделях то есть они показывают подсказки полям они показывают все сообщения об ошибках они отмечают поле как ошибочным они показывают пример вот они показывают те данные которые пользователь уже вел


[07:23 - 07:40] r - в том что зачастую просто несовместимостями макетами которое вам нужно верстать согласно техническому заданию а поэтому часто делаются более сложный вариант


Step 5 (S-44887) 3.png

[07:40 - 07:54] здесь показан в более менее работоспособный вариант а как отобразить django форму 70 ее с версткой а вот строка


[07:54 - 08:11] а форма передается в виде параметров облом начинается обработка с того что проверяется а специальное поле field


[08:11 - 08:29] что такое новодел и рос и рос это список ошибок которые а не связано с конкретным поле а это например те ошибки которые возникают при выполнении


[08:29 - 08:46] метода клин то есть ошибки которые относятся ко всей форме в целом а не сможет сказать каком поле они относятся к тем не менее нужно показать а что мы делаем мы просто показываем виде специальных блоков


[08:46 - 09:06] класс автор дальше это красной полоской вполне подходит для отображения сообщений об ошибках так с этим все понятно это общие ошибки которые связаны с методом клин for далее начинается


[09:06 - 09:24] код самой формы мы видим что метод post формах и action ведет а на нужную нам вьюшку то есть предполагается что мы с помощью роутера или данной


[09:24 - 09:40] далее мы используем форму как лист как массив то есть мы пытаемся пройти а и трактором по данной формуле а дело в том что джанге формы поддерживают


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


[09:56 - 10:14] то поле которое в форме записали а совместно вот так водится поле а на самом деле поле это объект а класса feel 107 mail char field про которое мы говорили


[10:14 - 10:32] если у этого поля id свойства ей роз а значит данная конкретная польза и прошло валидацию то есть в нем есть ошибки что мы делаем если у нас есть мы добавляем специальный класс


[10:32 - 10:49] ко всей группе чтобы чтобы данные вот в поле ввода носа пометила с красным бутстрапе отмечается красным а мы вводим название поле label и далее мы вводим само поле


[10:49 - 11:04] заметьте что здесь все таки мы спускаемся да вывода конкретных мы тегов то есть до вывода input text area селект что то там а вместо этого мы


[11:04 - 11:22] используем вот такую конструкцию то есть мы вводим в поле как текст а в объектах а в классах полей определен специальный метод для стринги стратификация которые преобразуют поле в нужны


[11:22 - 11:40] как правило им фото то есть там и тут она вполне подходит под поэтому дальше спускаться дальше не нужно но в принципе вы можете извлечь отдельно его имя


[11:40 - 11:56] отдельно значение отдельно а введенные данные пользователя все что угодно итак мы прошли по всем полям после чего нас кнопка сохранить


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


[12:11 - 12:27] итак мы поговорили про использование форм во вью и шаблон осталась еще 1 небольшая а тема относящиеся непосредственно к формам так называемые


Step 5 (S-44887) 4.png

[12:27 - 12:42] а если вы будете программировать а формы в проекте на django вы заметите что и com довольно однотипен особенно если в вашем проекте много


[12:42 - 12:58] разнообразных моделей которые необходимо все редактировать и еще вы заметите что список полей а форме для редактирования какой то модели фактически повторяет список полей в модели


[12:58 - 13:13] поэтому были а был разработан специальный механизм так называемый mobile phone а который позволяет встроить в форму для редактирования конкретной модели


[13:13 - 13:30] а при этом вам нет необходимости перечислять все поля которое есть они автоматически берутся из модель model form описывается следующим образом то есть вы настраиваетесь уже не от просто forms form


[13:30 - 13:47] forms model for и вместо перечисления полей вы указываете следующее вы указываете внутри класс указывается какую модель вы редактируете в нашем случае этот пост


[13:47 - 14:02] а и указываете список полей а вот 2 поле lower fields можно не указывать тогда будет редактироваться все поля если вам нужно редактировать не все поля указывать явно список


[14:02 - 14:18] все по свету model данный созданную форму можно использовать точно так же как предыдущие то есть у нее есть место д ра is valid есть метод save


[14:18 - 14:36] метод save а он как раз таки определенно в model форме и он сохраняется от указанную модель а на практике model form удобно использовать для довольно прост


[14:36 - 14:55] объектов то есть для разного рода справочников списке регионов списке категории еще какие то малозначительной списке если вы имеете дело с основными сущностями в вашем проекте то есть с важными сущностями model формы скорее всего будут не достаточно гибкими


[14:55 - 14:59] но для справочник в они в принципе очень хорошо подходит