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

Поделиться
HTML-код
  • Опубликовано: 3 июн 2024
  • Мой курс «Хардкорная веб-разработка» - 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
    @nurislamaskaruly6393 3 года назад +53

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

    • @amigo4884
      @amigo4884 2 года назад +4

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

  • @xander-on-the-earth
    @xander-on-the-earth 3 года назад +19

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

    • @pashadjoystick
      @pashadjoystick Год назад +2

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

  • @theprogrammersway4228
    @theprogrammersway4228 3 года назад +5

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

  • @andyanderson222
    @andyanderson222 2 года назад

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

  • @alexanderpastuhanov174
    @alexanderpastuhanov174 3 года назад

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

  • @user-yi3lr5tq9p
    @user-yi3lr5tq9p 3 года назад

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

  • @vitalik100500q
    @vitalik100500q 3 года назад

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

  • @ebaluga11
    @ebaluga11 3 года назад

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

  • @tihon4979
    @tihon4979 2 года назад

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

  • @MadMike93
    @MadMike93 3 года назад +14

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

  • @tsarevnalagushka
    @tsarevnalagushka 3 года назад +5

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

    • @t0digital
      @t0digital  3 года назад +1

      Да, всё так

  • @goldmeat_93
    @goldmeat_93 2 года назад

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

  • @daniilpopkov4176
    @daniilpopkov4176 3 года назад +1

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

  • @user-om9sf3fi6u
    @user-om9sf3fi6u 3 года назад +4

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

    • @t0digital
      @t0digital  3 года назад +3

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

  • @Dobrodei08
    @Dobrodei08 3 года назад

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

    • @t0digital
      @t0digital  3 года назад

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

  • @alexandrprisekin6907
    @alexandrprisekin6907 3 года назад

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

  • @AbrorkhonN.
    @AbrorkhonN. 3 года назад +1

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

  • @omurbekdulatov7844
    @omurbekdulatov7844 3 года назад

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

    • @t0digital
      @t0digital  3 года назад

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

  • @user-lz3ez3nn4j
    @user-lz3ez3nn4j 3 года назад

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

  • @Tenundor
    @Tenundor 3 года назад

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

  • @user-ow3tx2co8e
    @user-ow3tx2co8e 3 года назад

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

  • @79fz270704
    @79fz270704 3 года назад

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

  • @denissavast
    @denissavast Год назад

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

    • @t0digital
      @t0digital  Год назад

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

  • @gustaugutter9477
    @gustaugutter9477 3 года назад

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

  • @FoodMaks
    @FoodMaks 3 года назад

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

    • @t0digital
      @t0digital  3 года назад +1

      Спасибо 🙏

  • @foxik_cs5845
    @foxik_cs5845 Год назад

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

  • @user-qp8hg4ds2b
    @user-qp8hg4ds2b Год назад

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

  • @senatortre7326
    @senatortre7326 3 года назад +9

    С днюхой! 🥳

    • @t0digital
      @t0digital  3 года назад +2

      О, спасибо😜!

  • @artyom_ss
    @artyom_ss 3 года назад +21

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

    • @vdarasun
      @vdarasun 3 года назад

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

    • @user-cl1gz9jt3n
      @user-cl1gz9jt3n 3 года назад +3

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

  • @wyacheslawbogdanyonok5147
    @wyacheslawbogdanyonok5147 3 года назад

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

  • @antonmullakhmetov707
    @antonmullakhmetov707 3 года назад

    Спасибо!

  • @vb3039
    @vb3039 2 года назад

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

  • @vladimirww5152
    @vladimirww5152 3 года назад

    Класс!

  • @anatolyiredko9817
    @anatolyiredko9817 Год назад

    Человечище!

  • @N1F90
    @N1F90 3 года назад +2

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

    • @t0digital
      @t0digital  3 года назад +2

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

  • @owsla4507
    @owsla4507 3 года назад

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

    • @t0digital
      @t0digital  3 года назад +1

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

  • @limonred5283
    @limonred5283 3 года назад

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

  • @oZopHuk
    @oZopHuk 3 года назад +2

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

  • @wcodes-kk2pr
    @wcodes-kk2pr 3 года назад +3

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

  • @user-jl8ck9ni7f
    @user-jl8ck9ni7f 2 года назад

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

  • @architect_13
    @architect_13 11 месяцев назад

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

  • @bfdhtfyjhjj
    @bfdhtfyjhjj 3 года назад +4

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

    • @t0digital
      @t0digital  3 года назад +1

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

  • @dailyvideo1593
    @dailyvideo1593 Год назад

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

  • @elsinormerkaba2128
    @elsinormerkaba2128 3 года назад

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

    • @t0digital
      @t0digital  3 года назад

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

  • @beard_cat_sweater
    @beard_cat_sweater 3 года назад

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

  • @antonmullakhmetov707
    @antonmullakhmetov707 3 года назад

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

    • @t0digital
      @t0digital  3 года назад

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

  • @MADAHAKO
    @MADAHAKO 2 года назад

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

  • @dmitryponyatov2158
    @dmitryponyatov2158 3 года назад

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

  • @vladdeiy572
    @vladdeiy572 3 года назад

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

  • @messenja2547
    @messenja2547 3 года назад

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

    • @oZopHuk
      @oZopHuk 3 года назад

      Сложна.

    • @oZopHuk
      @oZopHuk 3 года назад +1

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

  • @user-fb3vv7tr2u
    @user-fb3vv7tr2u 3 года назад

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

    • @t0digital
      @t0digital  3 года назад

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

    • @user-fb3vv7tr2u
      @user-fb3vv7tr2u 3 года назад

      Спасибки)

  • @99phenomenon
    @99phenomenon Год назад

    Спасибо! LOCKED

  • @ThePirateHistory
    @ThePirateHistory 3 года назад +3

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

  • @user-df3jd5sp9y
    @user-df3jd5sp9y 3 года назад

    Приветствую! вижу что вы на маке, я сам мечусь, не знаю что выбрать для программирования и жизни вне разработки. Сейчас использую 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
    @kamil24940 10 месяцев назад

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

  • @pashadjoystick
    @pashadjoystick Год назад

    не плохо

  • @rskeldi
    @rskeldi 2 года назад

    хорооооооош

  • @user-di7gx3rc2q
    @user-di7gx3rc2q 3 года назад +1

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

    • @t0digital
      @t0digital  3 года назад +1

      Да

    • @cybron69
      @cybron69 3 года назад

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

  • @dvornikxilosof799
    @dvornikxilosof799 3 года назад

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

    • @t0digital
      @t0digital  3 года назад +1

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

    • @dvornikxilosof799
      @dvornikxilosof799 3 года назад

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

  • @Anonim-im6ln
    @Anonim-im6ln Год назад

    👍👍👍👍👍

  • @arstanernisbekov1194
    @arstanernisbekov1194 3 года назад

    👍👍👍👍

  • @oZopHuk
    @oZopHuk 3 года назад

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

    • @t0digital
      @t0digital  3 года назад +1

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

  • @kalik54
    @kalik54 3 года назад

    А вы работали с 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 года назад +1

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

  • @user-zk9og6lo7y
    @user-zk9og6lo7y 3 года назад

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

    • @t0digital
      @t0digital  3 года назад

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

  • @user-13520sdf
    @user-13520sdf 3 года назад +1

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

    • @t0digital
      @t0digital  3 года назад +1

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

    • @user-13520sdf
      @user-13520sdf 3 года назад

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

  • @kannykl7575
    @kannykl7575 3 года назад +2

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

  • @Alex-ip9bn
    @Alex-ip9bn 3 года назад

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

    • @t0digital
      @t0digital  3 года назад +1

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

    • @Alex-ip9bn
      @Alex-ip9bn 3 года назад

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

    • @user-gx6jl6bt4h
      @user-gx6jl6bt4h 3 года назад

      Приуныл)))

    • @N1F90
      @N1F90 3 года назад

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

  • @BersGriffith
    @BersGriffith 2 года назад

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

    • @BersGriffith
      @BersGriffith 2 года назад

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

  • @galymzhanmakhaliev5392
    @galymzhanmakhaliev5392 2 года назад

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

  • @mvxmvl
    @mvxmvl 3 года назад +1

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

    • @t0digital
      @t0digital  3 года назад +1

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

    • @mvxmvl
      @mvxmvl 3 года назад +2

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

    • @t0digital
      @t0digital  3 года назад +3

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

  • @realfootball338
    @realfootball338 3 года назад

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

  • @Andreeoo
    @Andreeoo 3 года назад

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

  • @mooncat4031
    @mooncat4031 3 года назад

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

  • @user-ms2hu5kk5z
    @user-ms2hu5kk5z 3 года назад

    Спасибо!