Step 5 (S-44785)

From Stepik Wiki
Jump to: navigation, search

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

Step 5 (S-44785) 1.png

[00:00 - 00:15] следующий функционал django про которое следует поговорить а в контексте контроллеров контексте views это декоратора а дело в том что джанго очень простая конструкция это просто


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


Step 5 (S-44785) 2.png

[00:32 - 00:47] давайте начнем с того что такое декораторов python потому что это знакомо а как они устроены знакомым всем программистам это может быть новостью декоратор эта функция которая


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


[01:04 - 01:22] которое удваивает значение возвращаемое какой то функции но предполагается что в свинце возвращает числовое значение что можно удвоить а вот у нас есть функция функция которая просто перемножает 2 часа я возвращаюсь


[01:22 - 01:38] а вращаясь значение когда надо этой функции пишут вот такую конструкцию собака это означает что функция применяют декоратор декоратор double а применение декоратора происходит на этапе парсинга файла


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


[01:55 - 02:11] он из себя представляет функцию которая на вход принимает изначальную функцию то есть когда поменяется декоратор а вот этот параметр funk в него будет передано значение функции некоторые функции


[02:11 - 02:27] ну то есть это та которая применяют декоратор далее сам декоратор должен вернуть другую функцию а до этого внутри декоратора эта функция создается создается новая функция с именем т п имя в данном случае неважно


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


[02:43 - 03:01] а в результате когда применяется декоратор вместо функции мульт а появится функция темпы и не сохранится солнце будет по прежнему назывался мульт но вместо нее будет функция темпы что произойдет когда вы вызовите функцию mood например


[03:01 - 03:16] а в таком случае функция которой был применен декоратора поскольку функция подменили вместо нее будет вызвана функция т п


[03:16 - 03:34] это замыкание которое ей передавай изначально то есть вот это вещь это по прежнему оригинальное функции ответственно вызовет с оригинальной функцию с параметрами 2 2 10 получится 4


[03:34 - 03:49] здесь умноженное на 2 в результате получится 22 равняется 8 а такой довольно грубый пример но смысл в том что декораторы позволяет полностью изменить поведение функции


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


Step 5 (S-44785) 3.png

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


[04:26 - 04:45] соответственно пакеты с который импортируется декоратора нужно узнать документации они к сожалению раскиданы по разным пакетам по разным модулям в томске соответствии с теми функциями которые не представляют


[04:45 - 05:01] итак вы импортировали декоратор например реклама post и далее этот декоратор применяется а поведение девушки теперь изменилось


[05:01 - 05:20] давайте посмотрим какие конкретно параметры парабола деканат recorded require post они ограничивают метода который поддерживает данная функция а зачем это нужно ну например если вы делаете вьюшку обработчик некоторой формой вы хотите гарантировать что


[05:20 - 05:38] в этой форме можно обратиться только с помощью метода post вы добавляете ну так обработка формы вы добавляете декораторы post соответственно если придет запрос джанго вернет


[05:38 - 05:55] специальный код ответа неправильный метод запрос кот есть более сложное а и более популярная функция коллагена required плагин рекорд говорит о том что для вызова данной функции пользователь должен быть авторизован


[05:55 - 06:11] то есть данная фишка доступна только авторизованным пользователям а под авторизацией здесь понимается стройная система авторизации в django но в принципе если вы используете свое авторизации вы можете написать свой декоратор если вы добавляете вот такой декоратор


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


[06:27 - 06:45] закрытой части сайта то есть правило части ну и еще такой пример сразу а джанго есть встроенная защита от атак по умолчанию она работает


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