#21. Оптимизация сайта с Django Debug Toolbar | Django уроки

Поделиться
HTML-код
  • Опубликовано: 11 сен 2024
  • Практический курс по Django: stepik.org/a/1...
    Django урок 21.Инструмент Django Debug Toolbar: как установить и анализировать качество работы приложения сайта. Пример устранения дублей в SQL-запросах в приложении coolsite.
    Телеграм-канал: t.me/django_se...
    Инфо-сайт: proproprogs.ru...
    lesson-21-coolsite.zip: github.com/sel...
    Порядок установки: django-debug-t...
    Русскоязычная документация по Django 3: djbook.ru/rel3.0/
    Официальный сайт по Django: www.djangoproj...

Комментарии • 94

  • @igorkulibaba7287
    @igorkulibaba7287 3 года назад +16

    Объяснение материала на высшем уровне! Очень доступно про жадные запросы. Спасибо!

  • @beatrisavan8352
    @beatrisavan8352 2 года назад +9

    Не работало отображение toolbar, попробовала прописать, как советовали в комментах, но для меня решение оказалось намного проще - ctrl+shift+r (удаление кэша страницы)

  • @friend1cat
    @friend1cat 3 года назад +7

    Спасибо, Сергей!

  • @siarheiulas6969
    @siarheiulas6969 Год назад +1

    Спасибо за отличный урок! Очень хорошее объяснение материала!

  • @threehundredbucks3212
    @threehundredbucks3212 2 года назад +8

    Спасибо за урок!
    Зря я не читал документацию и не добивался полного усвоения материала по ходу движения по вашим урокам) Временные промежутки между изучением и закрытие глаз на некоторые не до конца понятые аспекты в проекте сыграли злую шутку: Стал терять понимание проекта, его логики. Читаю код, который за вами же повторял и ранее вроде даже понимал и думаю: "Стоп, а как это вообще работает?", "А это что вообще?", "Как эти данные передаются ?"
    В общем, мозг начинает ломаться :)

    • @user-nm5ld9vr3k
      @user-nm5ld9vr3k Год назад +4

      Я, когда начинал терять понимание, стал оставлять комментарии в коде, помогает очень

    • @Serj1k2k
      @Serj1k2k Год назад +5

      @@user-nm5ld9vr3k Все верно, нужно вообще писать комментарии сразу, на каждый метод и построчно на все, что может вызывать вопросы. Не стоит в документацию сильно лезть- там много методов, которые нужны по факту и пытаться все запомнить нет смысла.

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

    Спасибо большое! Очень полезное видео!

  • @KravaDota
    @KravaDota Год назад +1

    Спасибо! Очень полезный урок! Реально круто!

  • @johk2293
    @johk2293 2 года назад +2

    Отлично! Тоже удалось оптимизировать пару запросов, несмотря на то что в целом мой сайт отличается от вашего в уроках. Удобный инструмент и сразу настроен так, чтобы не мешать в продакшене :)

  • @donfedor007
    @donfedor007 3 года назад +24

    Доброе время суток! У меня Debug Toolbar , не отображается. Мне помогло добаввление строк при формирование urlpatterns (что они значат пояснения не было):
    if settings.DEBUG:
    import debug_toolbar
    import mimetypes
    mimetypes.add_type("application/javascript", ".js", True)
    urlpatterns = [
    path('__debug__/', include(debug_toolbar.urls)),
    ] + urlpatterns
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

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

      по смыслу JavaScript добавляется для этого toolbar'a, но у меня как то и без него нормально и в документации модуля этого не было... все индивидуально )

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

      @@selfedu_rus может у меня , что блокируется. И поэтому пришлось прописывать. Не понятно( много гуглил , наткнулся на такой совет)

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

      Сижу гуглю второй день. Тоже всё установилось, а Debug Toolbar , не отображается. И ваше добавление, тоже не работает.

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

      @@baggrrationn то же самое. На Виндовсе не работает, на Линуксе в том же самом проекте - работает.

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

      @@baggrrationn Проблема в хроме скорее всего,попробуйте через мазилу открывать,тоже самое было

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

    Спасибо за информацию! Если у кого-то не работает Джанго-Тулбар, попробуйте установить версию 2.2. Мне в одном из проектов помогло, версии 3 и выше работать не хотели. По чему - не знаю...

  • @pilina_
    @pilina_ 2 года назад +1

    Спасибо за объяснение!

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

    Это вышка!

  • @ЭльдарМырзатай
    @ЭльдарМырзатай 3 года назад +1

    Спасибо за контент!

  • @user-uu3vq5xe9b
    @user-uu3vq5xe9b 2 года назад +2

    У кого не работает тулбар, попробуйте в settings.py добавить:
    mimetypes.add_type("application/javascript", ".js", True)

  • @begula_chan
    @begula_chan Год назад +1

    Спасибо!

  • @alex_satan
    @alex_satan 2 года назад +6

    Отличный урок)
    А лайков с просмотрами все меньше и меньше(
    Видно, не все смогу пройти этот путь до конца.

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

    круто

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

    Спасибо.

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

    Все получилось, спасибо большое!

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

    Круто

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

    Спасибо Вам за урок! Очень полезная тема! Эту функцию наверное лчше включать с начала создания проекта и отслеживать как, что идёт ?

    • @selfedu_rus
      @selfedu_rus  3 года назад +7

      Спасибо! Я решил сразу не перегружать материал, создать несколько неоптимальных запросов, а затем, показать, как их можно оптимизировать... но это все индивидуально, кому как нравится )

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

      @@selfedu_rus пожалуйста!

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

      @@selfedu_rus Отличное решение

  • @ЭльдарМырзатай
    @ЭльдарМырзатай 3 года назад +2

    Капец, я так далеко ещё не заходил)

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

    super!

  • @userqh67vey6
    @userqh67vey6 Год назад +1

    Тоже не отображался тулбар, хотя в исходном коде страницы он был. Помогло добавление mimetypes.add_type("application/javascript", ".js", True) и очистка кэша (или запуск на другом порту)

  • @13mufasa
    @13mufasa Год назад +2

    У меня не отображался тулбар, я просто сменил версию Python с 3.10 на 3.9. Теперь отображается.

  • @Dennis_Ritchie
    @Dennis_Ritchie Год назад +1

    по документации сделал все, не запускается (
    на 4й версии джанго будет работать Django Debug Toolbar ?

  • @kolyanlock
    @kolyanlock Год назад +1

    Спасибо. А почему в самом руководстве по другому? Там не используется if settings.DEBUG в urls, но мне тоже кажется так лучше.

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

      У меня получилось сделать миниатюру фото в поле изображения, но она не обновляется при загрузке нового изображения пока не сохранишь, я заморачивался с собственным классом для виджета. Хотелось бы конечно чтобы можно было увидеть что загрузил, перед там как сохранить.

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

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

  • @snappesisnappes
    @snappesisnappes Год назад +1

    У меня такой вопрос, по окончанию этого курса можно ли считать себя Django Junior?

    • @selfedu_rus
      @selfedu_rus  Год назад +1

      одного курса мало, нужны реальные проекты

    • @larionovartemy228
      @larionovartemy228 6 месяцев назад +1

      Привет, конкретно в Django ты будешь джуном после этого курса, курса по drf, а также хотя бы 2-3х месяцев работы над своими проектами. Но не забывайте, что одного только Django будет мало, есть ещё Git, Sql ( с какой-либо СУБД ), основы Linux, Docker и прочее.

    • @snappesisnappes
      @snappesisnappes 6 месяцев назад

      @@larionovartemy228 Спасибо, за это время я уже php junior'ом+ стал

  • @user-vk3yr7up6z
    @user-vk3yr7up6z 2 года назад +2

    Была проблема с отображением тулбара. Django автоматически вставляет html код тулбара перед тегом (с хтмл кодом я совсем не заморачивался, поэтому не использовал этот тэг). Для решения в файле settings прописал
    if DEBUG:
    DEBUG_TOOLBAR_CONFIG = {
    'INSERT_BEFORE': ' ' -(тут можно указать любой удобный для вас тэг или оставить пустым (тогда тулбар будет отображаться на каждой странице)
    }

  • @svitq368
    @svitq368 2 года назад +1

    Если вылетает ошибка «(urls.E004)…” связанная с MEDIA_URL , то мне помогло заменить “urlpatterns += static…” на “ *static…” и перенести эту строку в список к пути debug_toolbar

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

      Хотя при DEBUG=False , новые изображения не отображаются, поэтому вот способ получше
      From django.views.static import serve
      From django.urls import re_path
      И в самом низу вне каких либо списков добавляем строку рядом со строкой из видео автора
      urlpatterns += [re_path(r”^media/(?.*)$”, serve, {“document_root”: settings.MEDIA_ROOT,}),]

  • @gesuschrist1553
    @gesuschrist1553 Месяц назад

    У меня возникла ошибка импорта этого модуля. Долго разбирался, ничего не помогло. Потом перезагрузил ПК и попробовал заново. Ну и конечно все сразу заработало:)
    Теперь у меня вопросы по запросам. Это вообще норма, что запрос выполняется 1мс? У меня бордовым подчеркнуто:)
    Спасибо вам за урок!

    • @selfedu_rus
      @selfedu_rus  Месяц назад

      для среднего сайта пойдет ) и скорость обработки от выбоанной СУБД и железа зависит еще; а вообще такие конкретные вопросы хорошо задавать в ТГ-канал по Django (ссылка под видео). Успехов!

    • @gesuschrist1553
      @gesuschrist1553 Месяц назад

      @@selfedu_rus спасибо! Обязательно перейду в ТГ канал:)

  • @777ElfenLied777
    @777ElfenLied777 3 года назад

    Сергей, видел в вашем коде закоментированное место под хлебные крошки, всё ждал когда вы раскроете тему как в Djago сделать автоматическую генерацию хлебных крошек и судя по всему в оставшихся видео этого не будет(( Подскажите, пожалуйста, где можно узнать инфу на эту тему? В документации полазил - не нашёл.

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

      Возможно вот здесь найдете ответ на свой вопрос: stackoverflow.com/questions/826889/how-to-implement-breadcrumbs-in-a-django-template
      А, вообще, это тоже нужно заснять. Спасибо!

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

      @@selfedu_rus так что ждём!)

    • @Manu-ei6tn
      @Manu-ei6tn 2 года назад

      @@selfedu_rus Было бы здорово!

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

    OSError: [WinError 123] Синтаксическая ошибка в имени файла, имени папки или метке тома: ''
    выводит эту ошибку, вроде все сделал как в уроке, еще ModuleNotFoundError: No module named 'debug_toolbarwomen'
    выскакивает, не знаете с чем это связано? везде пересмотрел((

    • @Sadness-zov
      @Sadness-zov 3 года назад

      debug_toolbarwomen women-то откуда взялось?

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

      В settings.py INSTALLED_APPS после 'debug_toolbar' проверь запятую

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

      Тоже боролся около часа, в итоге помогла установка django-debug-toolbar выйдя из виртуальной среды

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

    Панель инструментов django-debug-toolbar не отображается ни в одном браузере. Главная страница открывается без ошибок.

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

      Решение: удалить файлы-куки в браузере через настройку. Не сработало в Edge и Maxthon.

  • @MrMohindR
    @MrMohindR Год назад +1

    чет не вылазит у меня этот ДжангоДебаг :(
    за видео спасибо

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

      на 2023 в доках тулбара настройки при установке немного другие

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

    Почему-то тулбар на Линуксе работает, а в том же самом проекте на Windows - нет. Локалхост ip такой же, 127.0.0.1

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

      У меня Windows и все работает.

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

      @@selfedu_rus Привет, может подскажешь? У меня проект на heroku статики на s3.amazonaws. Локально debug_toolbar запускается, если отключить ссылки s3.amazonaws. Есть ли кастройки, чтобы debug_toolbar запускался при включенных ссылках s3.amazonaws?

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

      у меня в хроме на винде показывало ошибку Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of "text/plain". Strict MIME type checking is enforced for module scripts per HTML spec.
      Лечится добавлением в settings.py
      if DEBUG:
      import mimetypes
      mimetypes.add_type("application/javascript", ".js", True)
      обновить страницу shift+f5
      возможно Ваш случай, но это не точно)

  • @MrJet84
    @MrJet84 2 года назад +1

    Не понял в конце. Если стало запросов 5 вместо 4-х и они стали дольше времени занимать, в чём оптимизация? Но видео очень крутое.

    • @Insolonse
      @Insolonse 2 года назад +1

      было 6 с дублем, стало 5. 4 запроса было, когда из WomenCategory в get_context_data подставили значение c_def из WomenHome.

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

    Не вимен, а вумен!

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

      women - множественное число, произносится как вимен, а вы говорите про единственное число woman, которое действительно звучит как вумен

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

      @@selfedu_rus , извините. тогда ещё path - произноситься как пэс

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

      @@user-rl7dv8qn7z транскрипция для path - [pɑːθ]

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

      @@selfedu_rus , ну так это пэс

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

      @@user-rl7dv8qn7z не совсем, пэс - это вот так [pэs]

  • @zobweyt
    @zobweyt Год назад +1

    так покрасивее будет)
    if settings.DEBUG:
    import debug_toolbar
    urlpatterns.append(path('__debug__/', include(debug_toolbar.urls)))

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

    У меня не хотел работать, со всеми верными настройками, решил проблему так:
    Переходим в реестр windows(Можно нажать Win+R и написать regedit или просто в поиске найти редактор реестра )
    Потом переходим в папку HKEY_CLASSES_ROOT в ней находим расширение .js нажимаем на эту папочку и справа есть три свойства(или вставте в строку поиска HKEY_CLASSES_ROOT\.js)
    В Content Type прописываем в значение text/javascript.
    Переходим в браузер чистим кеш, перезапускаем сервер и все должно работать можно перезапустить еще комп

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

      Спасибо! И как ты только до этого додумался...

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

      да, все сработало, спасибо)

  • @Sadness-zov
    @Sadness-zov 3 года назад +2

    А как оптимизировать запросы к базе данных, если ForeignKey несколько последовательных? Например, есть страны, регионы, города, которые поочерёдно связаны по ключу ForeignKey. Город с регионом, регион со страной. И если в городе прописать
    def __str__(self):
    """Строка наименования города, формируется с регионом и страной."""
    return f'{self.region.countrys}, {self.region}, {self.name}'
    То в файле views.py
    def get_queryset(self):
    return super().get_queryset().select_related('region',)
    Оптимизирует выборку регионов, но страны будут выбираться при каждой итерации заново.

    • @Sadness-zov
      @Sadness-zov 3 года назад +2

      В общем, сам разобрался. В views.py прописал для класса
      def get_queryset(self):
      return super().get_queryset().all().values("city__region__country__name", )
      Обратите внимание на двойные подчеркиавния.

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

    Вот такая ошибка, уже и не знаю что и делать(((
    Traceback (most recent call last):
    """File C:\Program Files\JetBrains\PyCharm 2022.2.1\plugins\python\helpers\pydev\pydevd.пай , line 1496, in _exec
    pydev_imports.execfile(file, globals, locals) # execute the script
    File "C:\Program Files\JetBrains\PyCharm 2022.2.1\plugins\python\helpers\pydev\_pydev_imps\_pydev_execfile.пай", line 11, in execfile
    stream = tokenize.open(file) # @UndefinedVariable
    File "C:\Program Files\Python3.10.7\lib\tokenize.пай", line 394, in open
    buffer = _builtin_open(filename, 'rb')
    PermissionError: [Errno 13] Permission denied: 'C:\\Program Files\\Python3.10.7\\Scripts'"""

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

    Спасибо!