Django Middleware - что это, зачем и как использовать

Мой курс «Хардкорная веб-разработка» - course.to.digital
Книжный клуб Ботаним!, где мы читаем хорошие ИТ-книги: botanim.to.digital/
Telegram: t0digital.t.me
Сказать спасибо за это видео можно здесь - boosty.to/digitalize.team
Django Middleware позволяют выполнять логику до вызова View слоя или после него, что даёт возможность централизованно собирать статистику, обрабатывать исключения, реализовывать общесистемные валидации и так далее. Поговорим об этом механизме подробнее!
0:00 О чём пойдёт речь в выпусе
0:27 Что такое Django Middleware?
1:22 Смотрим на примере
14:19 Выводы
/****************** about ******************/
Меня зовут Алексей Голобурдин, я программирую с 2004 года и на этом канале делюсь своим опытом. Я основатель и руководитель компаний:
- Диджитализируй digitalize.team, разрабатываем сложные IT системы для бизнеса;
- Salesbeat salesbeat.pro, комплексный модуль доставки для интернет магазинов.
Если у вас есть проект на разработку, пишите нам на hi@digitalize.team.
С другими предложениями, а также если вам нужна одна или несколько индивидуальных консультаций/уроков по разработке (3000 руб/час), пишите мне на alexey@salesbeat.pro.
Telegram канал - t.me/t0digital
ВК - digitalize.team
RuTube - rutube.ru/channel/24802975/ab...
Дзен - dzen.ru/id/6235d32cb64df01e6e...

Пікірлер: 125

  • @nurislamaskaruly6393
    @nurislamaskaruly63933 жыл бұрын

    Запили видео про тестирование в Django. ждём...

  • @amigo4884

    @amigo4884

    2 жыл бұрын

    Алексей, если ты видишь это сообщение, то: 1. Улыбнись, прямо сейчас это прикольный момент. Я думаю, что ты увидишь это через года два. 2. Сделай видео по pytest-django.

  • @xander-on-the-earth
    @xander-on-the-earth3 жыл бұрын

    Как всегда классно! Маленький советик для начинающих питонщиков (ежели таковые вдруг заглянут сюда): стирать запятые после последнего элемента списка не требуется (у самого была эта привычка, привнесённая из других языков программирования). Как по мне, так лучше всегда ставить запятую после последнего элемента и уже никогда не беспокоиться ни о добавлении ещё одного элемента, ни о закомментировании отдельных строчек.

  • @pashadjoystick

    @pashadjoystick

    Жыл бұрын

    пайтону оно не мешает а у тех кто на разных языках программирования- это будет вызывать Эксепшен в голове :) в ПХП тоже можно ; не ставить в конце строки но я ставлю чтобы переключаясь с С-шарп у меня волосы дыбом не становились

  • @theprogrammersway4228
    @theprogrammersway42283 жыл бұрын

    Совсем недавно наткнулся на этот канал, мне очень понравилось, что в каждом видео очень доходчиво объясняется тема и даже разбираются некоторые нюансы. За такие видео, если бы можно было, ставил бы несколько лайков!

  • @andyanderson222
    @andyanderson2222 жыл бұрын

    Классное объяснение! Всё очень наглядно, спасибо!

  • @alexanderpastuhanov174
    @alexanderpastuhanov1743 жыл бұрын

    Все по полочкам разложили! Спасибо большое!

  • @tihon4979
    @tihon49792 жыл бұрын

    Круто! Мощно! Очень полезно. Благодарю.

  • @goldmeat_93
    @goldmeat_932 жыл бұрын

    Благодарю! Очень полезный видос. Меня почти на каждом интервью спрашивают про Middleware.

  • @user-yi3lr5tq9p
    @user-yi3lr5tq9p3 жыл бұрын

    Спасибо, очень доходчиво и просто! Продолжай в том же духе)

  • @ebaluga11
    @ebaluga113 жыл бұрын

    Большое спасибо за видео! Всё ясно и чётко.

  • @daniilpopkov4176
    @daniilpopkov41763 жыл бұрын

    Огромнейшее спасибо!

  • @tsarevnalagushka
    @tsarevnalagushka3 жыл бұрын

    Супер! Как человеку, не использующему django, но использующему rack, очень интересно посмотреть. И увидеть, что, оказывается, всё то же самое

  • @t0digital

    @t0digital

    3 жыл бұрын

    Да, всё так

  • @vitalik100500q
    @vitalik100500q3 жыл бұрын

    Супер, всегда эта тему смутно понимал, а ты все по полочкам разложил

  • @user-om9sf3fi6u
    @user-om9sf3fi6u3 жыл бұрын

    Спасибо за видео! Наверное, лучший канал в плане донесения подобной информации доступным языком)

  • @t0digital

    @t0digital

    3 жыл бұрын

    Спасибо! Стараемся:)

  • @Dobrodei08
    @Dobrodei083 жыл бұрын

    Только вчера в анкете писал что хочу с Django Middlewar разобраться и вот оно уже тут) Большое спасибо) Лойс не глядя!

  • @t0digital

    @t0digital

    3 жыл бұрын

    Рад, что полезно:)!

  • @alexandrprisekin6907
    @alexandrprisekin69073 жыл бұрын

    Спасибо, очень толково!

  • @AbrorkhonN.
    @AbrorkhonN.3 жыл бұрын

    Поставил лайк, но посмотрю видос завтра)

  • @MadMike93
    @MadMike933 жыл бұрын

    Так вот что такое middleware)) долго не мог понять что это и зачем))

  • @Tenundor
    @Tenundor3 жыл бұрын

    Спасибо! Видео, однозначно, было полезно.

  • @user-lz3ez3nn4j
    @user-lz3ez3nn4j3 жыл бұрын

    Полезная информация, спасибо за ваш труд

  • @t0digital

    @t0digital

    3 жыл бұрын

    Спасибооо!

  • @denissavast
    @denissavast Жыл бұрын

    Благодарю за отличный материал !

  • @t0digital

    @t0digital

    Жыл бұрын

    Рад, что полезно!

  • @user-ow3tx2co8e
    @user-ow3tx2co8e3 жыл бұрын

    Топовый контент подвезли! Спасибо))

  • @t0digital

    @t0digital

    3 жыл бұрын

    Спасибо 💪

  • @79fz270704
    @79fz2707043 жыл бұрын

    Благодарю, полезная инфа про отлов exception

  • @t0digital

    @t0digital

    3 жыл бұрын

    Спасибо!

  • @omurbekdulatov7844
    @omurbekdulatov78443 жыл бұрын

    С каждым просмотром, узнаю новые вещи, круто!

  • @t0digital

    @t0digital

    3 жыл бұрын

    Отлично, рад, что полезно!

  • @FoodMaks
    @FoodMaks3 жыл бұрын

    Спасибо😁. Очень круто объяснил🤟

  • @t0digital

    @t0digital

    3 жыл бұрын

    Спасибо 🙏

  • @senatortre7326
    @senatortre73263 жыл бұрын

    С днюхой! 🥳

  • @t0digital

    @t0digital

    3 жыл бұрын

    О, спасибо😜!

  • @user-qp8hg4ds2b
    @user-qp8hg4ds2b Жыл бұрын

    Класс!!! Спасибо!

  • @foxik_cs5845
    @foxik_cs5845 Жыл бұрын

    боже,как же круто объясняешь,спасибо огромное! Однозначно жирнейший лайк

  • @t0digital

    @t0digital

    Жыл бұрын

    Спасибооо!

  • @antonmullakhmetov707
    @antonmullakhmetov7073 жыл бұрын

    Спасибо!

  • @wyacheslawbogdanyonok5147
    @wyacheslawbogdanyonok51473 жыл бұрын

    Как всегда актуалочка)

  • @gustaugutter9477
    @gustaugutter94773 жыл бұрын

    Спасибо за видео, как всегда, очень познавательно) Остался вопрос - как так получается, что в методе __call__ отрабатывает второй принт, если метод process_exception возвращает HttpResponse?

  • @anatolyiredko9817
    @anatolyiredko9817 Жыл бұрын

    Человечище!

  • @vb3039
    @vb30392 жыл бұрын

    Спасибо уже реализовал :)

  • @t0digital

    @t0digital

    2 жыл бұрын

    Отлично!

  • @vladimirww5152
    @vladimirww51523 жыл бұрын

    Класс!

  • @limonred5283
    @limonred52833 жыл бұрын

    Напряжненько) Надо высыпаться перед просмотром)

  • @wcodes-kk2pr
    @wcodes-kk2pr3 жыл бұрын

    Да чтож так годно то, а?!

  • @owsla4507
    @owsla45073 жыл бұрын

    ОГРОМНОЕ СПАСИБО ЗА НАИКРУТЕЙШИЙ ВИДОС

  • @t0digital

    @t0digital

    3 жыл бұрын

    Рад, что полезно!

  • @artyom_ss
    @artyom_ss3 жыл бұрын

    Надо было упомянуть, что Middleware - это паттерн Chain of responsibilities)

  • @vdarasun

    @vdarasun

    3 жыл бұрын

    Не, с луком же проще, чем с неведомыми паттернами GoF. ))

  • @user-cl1gz9jt3n

    @user-cl1gz9jt3n

    3 жыл бұрын

    Это просто класс декоратор. Цепочка обязанностей несколько более специфичный случай.

  • @N1F90
    @N1F903 жыл бұрын

    у этого канала должно быть больше подписчиков!!))

  • @t0digital

    @t0digital

    3 жыл бұрын

    Растём органически:)! Спасибооо!

  • @architect_13
    @architect_1311 ай бұрын

    Лайк за материал! Как-то я был с знаком с одним интересным товарищем, так он тоже всю дорогу писал в виме. Странное хобби

  • @antonmullakhmetov707
    @antonmullakhmetov7073 жыл бұрын

    Ваш канал для меня находка, я читал всю доку джанги, но вот совсем не помню ничего про middleware. Не думаю, что нашел бы эту информацию сам снова:D (нужно внимательнее читать доки)

  • @t0digital

    @t0digital

    3 жыл бұрын

    Отлично, рад, что полезно!

  • @dailyvideo1593
    @dailyvideo1593 Жыл бұрын

    По кайфу, всегда думал что это за слои такие то))

  • @user-jl8ck9ni7f
    @user-jl8ck9ni7f2 жыл бұрын

    Здравствуйте, а можно ли Middleware, увидеть имя view при исключении? спасибо.

  • @vladdeiy572
    @vladdeiy5723 жыл бұрын

    Cспециально зашел под видео ноутом, на android tv нет комментов в app yotube... Пойду про курс посмотрю 🐱‍👤🐱‍🏍 Очень нужный контент 🐱‍💻

  • @t0digital

    @t0digital

    3 жыл бұрын

    Спасибооо!

  • @oZopHuk
    @oZopHuk3 жыл бұрын

    Поставил паузу, что бы написать комментарий. "Это быстро, и доступно"

  • @bfdhtfyjhjj
    @bfdhtfyjhjj3 жыл бұрын

    Спасибо! Слышали ли вы о Graphql? Стоит ли ждать видео по этой технологии в связке с Django?

  • @t0digital

    @t0digital

    3 жыл бұрын

    Да, слышал, возможно будет материал, да

  • @dmitryponyatov2158
    @dmitryponyatov21583 жыл бұрын

    а есть в Django вменяемая возможность раздолбать RDBMS-слой, засунув туда собственный интерфейс с NoSQL (neo4j) СУБД которая Django из коробки не поддерживается?

  • @messenja2547
    @messenja25473 жыл бұрын

    Не въезжал в эти мидлы в ларавел, теперь понял) Великодушно благодарствую

  • @oZopHuk

    @oZopHuk

    3 жыл бұрын

    Сложна.

  • @oZopHuk

    @oZopHuk

    3 жыл бұрын

    Скорее курс. Хочу раскурить всё это

  • @elsinormerkaba2128
    @elsinormerkaba21283 жыл бұрын

    Спасибо! Наконец-то человеческое объяснение, что такое и зачем нужен middleware! Каждый раз ловлю себя на мысли при чтении доки по джанго, что ее срочно надо перевести с мудацкого с русский (или вменяемый английский)

  • @t0digital

    @t0digital

    3 жыл бұрын

    есть такое:) Спасибо!

  • @pashadjoystick
    @pashadjoystick Жыл бұрын

    не плохо

  • @beard_cat_sweater
    @beard_cat_sweater3 жыл бұрын

    В памяти свеж еще один пример применения middleware из реального проекта: django.middleware.locale.LocaleMiddleware позволяет работать функции django.utils.translation.get_language(), которая использовалась для кастомного перевода ответа по graphql. Экспериментировал в своё время - убирал этот middleware из списка, после чего весь перевод отказывался работать.

  • @user-fb3vv7tr2u
    @user-fb3vv7tr2u3 жыл бұрын

    Классный видос, а что там по анкетам курса? Норм количество?

  • @t0digital

    @t0digital

    3 жыл бұрын

    Анкеты анализирую, по результатам будет информация на канале

  • @user-fb3vv7tr2u

    @user-fb3vv7tr2u

    3 жыл бұрын

    Спасибки)

  • @MADAHAKO
    @MADAHAKO2 жыл бұрын

    Жаль, что не вы писали документацию по Джанго, я бы тогда его ещё больше любил )

  • @99phenomenon
    @99phenomenon Жыл бұрын

    Спасибо! LOCKED

  • @user-df3jd5sp9y
    @user-df3jd5sp9y3 жыл бұрын

    Приветствую! вижу что вы на маке, я сам мечусь, не знаю что выбрать для программирования и жизни вне разработки. Сейчас использую win10 но посматриваю на Mac OS и Ubuntu. Замечаю, многие программисты переходят на mac os но не понятно зачем?

  • @t0digital

    @t0digital

    3 жыл бұрын

    Привет! Я не буду вам советовать или не советовать мак, пусть это будет вашим решением :) у меня прошка 2015 года 15 дюймов - долгая работа от аккумулятора, хороший металлический корпус, хорошая клавиатура, железо и софт хорошо оптимизированы друг под друга, Mac OS это сертифицированный Unix, поэтому имеем с одной стороны полноценный мощный *nix терминал, с другой стороны имеем красивый и удобный GUI для работы с офисными приложениями и тд, под мак есть родной Microsoft офис, есть родной фотошоп и другие нужные мне лично программы. Под линукс их нет, их линукс аналоги отстой, запускать под линукс виндоус софт придётся через виртуализацию, что возможно, но не самое приятное занятие. Винда сейчас по отзывам неплоха и вроде там WSL позволяет работать в линуксовой консоли из-под винды, но я не могу ничего сказать об этом, почти 10 лет не сидел на винде, возможно и на винде сейчас все в шоколаде. Майкрософтовские ноуты неплохи по отзывам. Dell xps неплохая линейка под винду и линукс. Старые thinkpad из недорогих хороши под винду и линукс. Для линукс мощного можно посмотреть в сторону ноутов system76. Apple скоро обещает выпустить ноуты со своими arm процессорами, я бы подождал этого времени и новых маков сейчас не брал. На родных arm будут мощнее, возможно энергоэффективнее и возможно по слухам даже дешевле, что, зная Apple, конечно, не факт.

  • @semensemenov9519

    @semensemenov9519

    2 жыл бұрын

    хайп и понты. Писал писал и ютуб обрезал все написанное до трех слов, лол

  • @kamil24940
    @kamil249409 ай бұрын

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

  • @dvornikxilosof799
    @dvornikxilosof7993 жыл бұрын

    Привет, можно где-то найти твои конфиги zsh и т.д.? Если конечно это не секрет))) А за видео огромное спасибо, очень полезно!

  • @t0digital

    @t0digital

    3 жыл бұрын

    О, сделаю видео по zsh:)

  • @dvornikxilosof799

    @dvornikxilosof799

    3 жыл бұрын

    @@t0digital Спасибо огромное!!!

  • @kalik54
    @kalik543 жыл бұрын

    А вы работали с AWS? Если да то хотел бы увидеть ролик по Nginx + AWS (s3 bucket). Было бы полезно посмотреть

  • @t0digital

    @t0digital

    3 жыл бұрын

    А зачем своим nginx раздавать файлы с S3?

  • @kalik54

    @kalik54

    3 жыл бұрын

    @@t0digital Ну к примеру мне нужно медиа файлы на продакшне аплоадить в бакет, и их как то брать и показывать на сайте. Как я понял надо указать location /media: и там вместо /home/www/project/media/ указать my-bucket.s3.aws..... Или я что то неправильно понимаю?

  • @t0digital

    @t0digital

    3 жыл бұрын

    @@kalik54 к S3 бакету можно прикрутить свой домен и забирать сразу оттуда файлы, минуя свой nginx. То есть веб сервер будет на стороне S3, они это умеют.

  • @kalik54

    @kalik54

    3 жыл бұрын

    @@t0digital А что в таком случае прописывать в location /media?

  • @t0digital

    @t0digital

    3 жыл бұрын

    @@kalik54 в таком случае вам не нужна папка /media в вашем домене:) напр, ваш домен - site.ru, и раньше медиа файлы хранились в site.ru/media/. Теперь вы вынесли файлы в S3, сделали домен media.site.ru, привязали его к бакету S3 и храните файлы в этом бакете. Была ссылка на файл site.ru/media/123.jpg, стала media.site.ru/123.jpg.

  • @user-di7gx3rc2q
    @user-di7gx3rc2q3 жыл бұрын

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

  • @t0digital

    @t0digital

    3 жыл бұрын

    Да

  • @cybron69

    @cybron69

    3 жыл бұрын

    Если вам достаточно получать не отловленные ошибки на email, то для этого нужно всего лишь указать в конфиге настройки smtp сервера и email администратора.

  • @ThePirateHistory
    @ThePirateHistory3 жыл бұрын

    как в моделс, пре сейв и пост сэйв

  • @Anonim-im6ln
    @Anonim-im6ln Жыл бұрын

    👍👍👍👍👍

  • @user-zk9og6lo7y
    @user-zk9og6lo7y3 жыл бұрын

    Сделай видео про тесты пожалуйста

  • @t0digital

    @t0digital

    3 жыл бұрын

    Есть такой материал в планах

  • @arstanernisbekov1194
    @arstanernisbekov11943 жыл бұрын

    👍👍👍👍

  • @rskeldi
    @rskeldi2 жыл бұрын

    хорооооооош

  • @oZopHuk
    @oZopHuk3 жыл бұрын

    Где инфа про курсы?)))

  • @t0digital

    @t0digital

    3 жыл бұрын

    Люди досылают ещё анкеты, я их анализирую. Курсы будут. Информация сообщу в ближайшие дни.

  • @kannykl7575
    @kannykl75753 жыл бұрын

    """ Коммент для продвижения видео на ютубе """ Спасибо за видео!

  • @t0digital

    @t0digital

    3 жыл бұрын

    Спасибооо!

  • @user-13520sdf
    @user-13520sdf3 жыл бұрын

    А в чем конкретная большая разница использовать какой-нибудь декоратор @handle_exceptions и Middleware. По сути то же самое делают.

  • @t0digital

    @t0digital

    3 жыл бұрын

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

  • @user-13520sdf

    @user-13520sdf

    3 жыл бұрын

    Диджитализируй! Я понимаю, почитал, хотел найти разницу в накладных ресурсах , но так понимаю, что это то же самое почти

  • @Alex-ip9bn
    @Alex-ip9bn3 жыл бұрын

    Чувак , что там с курсом ? От этого зависит , останусь я в мск сейчас или нет!)

  • @t0digital

    @t0digital

    3 жыл бұрын

    88% людей за онлайн, поэтому курс будет онлайн, во всяком случае первый поток

  • @Alex-ip9bn

    @Alex-ip9bn

    3 жыл бұрын

    @@t0digital все понятно , значи еду обратно в свой мухосранск ))

  • @user-gx6jl6bt4h

    @user-gx6jl6bt4h

    3 жыл бұрын

    Приуныл)))

  • @N1F90

    @N1F90

    3 жыл бұрын

    @@t0digital ДАААА!!!!! ОНЛАЙН!!)))))

  • @BersGriffith
    @BersGriffith2 жыл бұрын

    у меня это с декоратором ассоциируется. Там принцип такой же.

  • @BersGriffith

    @BersGriffith

    2 жыл бұрын

    если несколько декораторов применить к одной функции

  • @galymzhanmakhaliev5392
    @galymzhanmakhaliev53922 жыл бұрын

    братан ты случайно не хаскер?)

  • @mvxmvl
    @mvxmvl3 жыл бұрын

    Не услышал самого главного - зачем и как. Неужели мидлы нужны, чтобы тупо ловить исключения? Можно было интереснее тему развить :(

  • @t0digital

    @t0digital

    3 жыл бұрын

    Зачем - чтобы вставлять логику до view или после view, об этом говорилось в видео. Как - показано в видео. Сорян:)

  • @mvxmvl

    @mvxmvl

    3 жыл бұрын

    Диджитализируй! Согласись, что эта фраза равносильна «джанго нужен для построения сайтов». Если бы ты пробежался по ряду тем, мол, исключения, пятое, десятое и делается вот так, то была бы пища для размышлений

  • @t0digital

    @t0digital

    3 жыл бұрын

    Спасибо за фидбек, возможно сделаю второе видео по джанговым Middleware с живыми примерами

  • @Andreeoo
    @Andreeoo3 жыл бұрын

    луковичная парадигма программирования

  • @realfootball338
    @realfootball3383 жыл бұрын

    В ноде от этого начали убегать

  • @mooncat4031
    @mooncat40313 жыл бұрын

    Супер! Дьявол кроется в деталях!

  • @user-ms2hu5kk5z
    @user-ms2hu5kk5z3 жыл бұрын

    Спасибо!

Келесі