14 Конвертеры роутов в Django. Path converters Django 3

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

Category: N/A

Building WordCloud ...

Summary

No summary available.

Transcript

00:00

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

00:16

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

00:31

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

00:48

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

01:05

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

01:20

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

01:36

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

01:51

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

02:08

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

02:25

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

02:41

если control alt и л у вас не срабатывает то можете нажать вот эту вкладку код и выбрать вот это меню он сделать то же самое отлично и смотрите теперь мы с вами вот эти iv и все можем удалить и написать

02:58

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

03:14

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

03:30

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

03:46

переменой не пустая то есть здесь будет какая-либо строка то мы с вами возвращаем ответ на что теперь response ее туда передаем наши description а вот для значения но напоминаю она

04:01

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

04:17

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

04:34

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

04:51

404 а при валидным запросе то есть когда мы указываем конкретный знак зодиака мы с вами получаем статус ответы 200 напоминаю что этот статус нам выставляет сам класс http response выставит 200 а

05:06

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

05:22

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

05:39

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

05:54

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

06:10

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

06:26

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

06:41

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

06:57

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

07:14

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

07:32

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

07:48

соответственно вместо принта я возвращаю http response со значением этой строки вновь обновляем страничку давайте уберу . снова вот мы получаем значение 15 обращаясь к двойке мог мы

08:06

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

08:21

строка и я сделал это не случайно дело в том что обработка road of в в этом списке она происходит сверху вниз и как только найдется первое совпадение то и будет вызвана соответствующее представление давайте их поменяем

08:36

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

08:51

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

09:09

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

09:25

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

09:40

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

09:56

значение скажем 16 и давайте здесь где-то info about 16 просто простая функция мы продублируем вот эту строчку и здесь мы просто скажем что это 16 это уже не я

10:15

в строка параметр зодиак нам принимать не нужно и нам нужно быть уверенным что функция называется вот таким вот образом то есть переименовываю и смотрите слева у нас все в порядке единичка весна

10:33

амбар 112 весна в 12 а вот 16 у нас попадет именно вот в это представление и здесь уже будет сообщение без слова нам и это значит что мы обрабатываем юрий лу

10:50

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

11:07

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

11:24

в джунгли но есть такой раздел которым описывается как создать свой собственный converter если вам будет интересна эта тема то отписывайтесь комментариях и тогда в конце этого модуля где мы с вами разбираем your love you я обязательно

11:39

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