#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...
Объяснение материала на высшем уровне! Очень доступно про жадные запросы. Спасибо!
Не работало отображение toolbar, попробовала прописать, как советовали в комментах, но для меня решение оказалось намного проще - ctrl+shift+r (удаление кэша страницы)
Спасибо, Сергей!
Спасибо за отличный урок! Очень хорошее объяснение материала!
Спасибо за урок!
Зря я не читал документацию и не добивался полного усвоения материала по ходу движения по вашим урокам) Временные промежутки между изучением и закрытие глаз на некоторые не до конца понятые аспекты в проекте сыграли злую шутку: Стал терять понимание проекта, его логики. Читаю код, который за вами же повторял и ранее вроде даже понимал и думаю: "Стоп, а как это вообще работает?", "А это что вообще?", "Как эти данные передаются ?"
В общем, мозг начинает ломаться :)
Я, когда начинал терять понимание, стал оставлять комментарии в коде, помогает очень
@@user-nm5ld9vr3k Все верно, нужно вообще писать комментарии сразу, на каждый метод и построчно на все, что может вызывать вопросы. Не стоит в документацию сильно лезть- там много методов, которые нужны по факту и пытаться все запомнить нет смысла.
Спасибо большое! Очень полезное видео!
Спасибо! Очень полезный урок! Реально круто!
Отлично! Тоже удалось оптимизировать пару запросов, несмотря на то что в целом мой сайт отличается от вашего в уроках. Удобный инструмент и сразу настроен так, чтобы не мешать в продакшене :)
Доброе время суток! У меня 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)
по смыслу JavaScript добавляется для этого toolbar'a, но у меня как то и без него нормально и в документации модуля этого не было... все индивидуально )
@@selfedu_rus может у меня , что блокируется. И поэтому пришлось прописывать. Не понятно( много гуглил , наткнулся на такой совет)
Сижу гуглю второй день. Тоже всё установилось, а Debug Toolbar , не отображается. И ваше добавление, тоже не работает.
@@baggrrationn то же самое. На Виндовсе не работает, на Линуксе в том же самом проекте - работает.
@@baggrrationn Проблема в хроме скорее всего,попробуйте через мазилу открывать,тоже самое было
Спасибо за информацию! Если у кого-то не работает Джанго-Тулбар, попробуйте установить версию 2.2. Мне в одном из проектов помогло, версии 3 и выше работать не хотели. По чему - не знаю...
Спасибо за объяснение!
Это вышка!
Спасибо за контент!
У кого не работает тулбар, попробуйте в settings.py добавить:
mimetypes.add_type("application/javascript", ".js", True)
Спасибо!
Отличный урок)
А лайков с просмотрами все меньше и меньше(
Видно, не все смогу пройти этот путь до конца.
круто
Спасибо.
Все получилось, спасибо большое!
Круто
Спасибо Вам за урок! Очень полезная тема! Эту функцию наверное лчше включать с начала создания проекта и отслеживать как, что идёт ?
Спасибо! Я решил сразу не перегружать материал, создать несколько неоптимальных запросов, а затем, показать, как их можно оптимизировать... но это все индивидуально, кому как нравится )
@@selfedu_rus пожалуйста!
@@selfedu_rus Отличное решение
Капец, я так далеко ещё не заходил)
super!
Тоже не отображался тулбар, хотя в исходном коде страницы он был. Помогло добавление mimetypes.add_type("application/javascript", ".js", True) и очистка кэша (или запуск на другом порту)
У меня не отображался тулбар, я просто сменил версию Python с 3.10 на 3.9. Теперь отображается.
по документации сделал все, не запускается (
на 4й версии джанго будет работать Django Debug Toolbar ?
да, работает
Спасибо. А почему в самом руководстве по другому? Там не используется if settings.DEBUG в urls, но мне тоже кажется так лучше.
У меня получилось сделать миниатюру фото в поле изображения, но она не обновляется при загрузке нового изображения пока не сохранишь, я заморачивался с собственным классом для виджета. Хотелось бы конечно чтобы можно было увидеть что загрузил, перед там как сохранить.
видос 3х годичной давности, настройки при установки немного изменились в документации тулбара, хотя остальное все такое же
У меня такой вопрос, по окончанию этого курса можно ли считать себя Django Junior?
одного курса мало, нужны реальные проекты
Привет, конкретно в Django ты будешь джуном после этого курса, курса по drf, а также хотя бы 2-3х месяцев работы над своими проектами. Но не забывайте, что одного только Django будет мало, есть ещё Git, Sql ( с какой-либо СУБД ), основы Linux, Docker и прочее.
@@larionovartemy228 Спасибо, за это время я уже php junior'ом+ стал
Была проблема с отображением тулбара. Django автоматически вставляет html код тулбара перед тегом (с хтмл кодом я совсем не заморачивался, поэтому не использовал этот тэг). Для решения в файле settings прописал
if DEBUG:
DEBUG_TOOLBAR_CONFIG = {
'INSERT_BEFORE': ' ' -(тут можно указать любой удобный для вас тэг или оставить пустым (тогда тулбар будет отображаться на каждой странице)
}
Если вылетает ошибка «(urls.E004)…” связанная с MEDIA_URL , то мне помогло заменить “urlpatterns += static…” на “ *static…” и перенести эту строку в список к пути debug_toolbar
Хотя при 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,}),]
У меня возникла ошибка импорта этого модуля. Долго разбирался, ничего не помогло. Потом перезагрузил ПК и попробовал заново. Ну и конечно все сразу заработало:)
Теперь у меня вопросы по запросам. Это вообще норма, что запрос выполняется 1мс? У меня бордовым подчеркнуто:)
Спасибо вам за урок!
для среднего сайта пойдет ) и скорость обработки от выбоанной СУБД и железа зависит еще; а вообще такие конкретные вопросы хорошо задавать в ТГ-канал по Django (ссылка под видео). Успехов!
@@selfedu_rus спасибо! Обязательно перейду в ТГ канал:)
Сергей, видел в вашем коде закоментированное место под хлебные крошки, всё ждал когда вы раскроете тему как в Djago сделать автоматическую генерацию хлебных крошек и судя по всему в оставшихся видео этого не будет(( Подскажите, пожалуйста, где можно узнать инфу на эту тему? В документации полазил - не нашёл.
Возможно вот здесь найдете ответ на свой вопрос: stackoverflow.com/questions/826889/how-to-implement-breadcrumbs-in-a-django-template
А, вообще, это тоже нужно заснять. Спасибо!
@@selfedu_rus так что ждём!)
@@selfedu_rus Было бы здорово!
OSError: [WinError 123] Синтаксическая ошибка в имени файла, имени папки или метке тома: ''
выводит эту ошибку, вроде все сделал как в уроке, еще ModuleNotFoundError: No module named 'debug_toolbarwomen'
выскакивает, не знаете с чем это связано? везде пересмотрел((
debug_toolbarwomen women-то откуда взялось?
В settings.py INSTALLED_APPS после 'debug_toolbar' проверь запятую
Тоже боролся около часа, в итоге помогла установка django-debug-toolbar выйдя из виртуальной среды
Панель инструментов django-debug-toolbar не отображается ни в одном браузере. Главная страница открывается без ошибок.
Решение: удалить файлы-куки в браузере через настройку. Не сработало в Edge и Maxthon.
чет не вылазит у меня этот ДжангоДебаг :(
за видео спасибо
на 2023 в доках тулбара настройки при установке немного другие
Почему-то тулбар на Линуксе работает, а в том же самом проекте на Windows - нет. Локалхост ip такой же, 127.0.0.1
У меня Windows и все работает.
@@selfedu_rus Привет, может подскажешь? У меня проект на heroku статики на s3.amazonaws. Локально debug_toolbar запускается, если отключить ссылки s3.amazonaws. Есть ли кастройки, чтобы debug_toolbar запускался при включенных ссылках s3.amazonaws?
у меня в хроме на винде показывало ошибку 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
возможно Ваш случай, но это не точно)
Не понял в конце. Если стало запросов 5 вместо 4-х и они стали дольше времени занимать, в чём оптимизация? Но видео очень крутое.
было 6 с дублем, стало 5. 4 запроса было, когда из WomenCategory в get_context_data подставили значение c_def из WomenHome.
Не вимен, а вумен!
women - множественное число, произносится как вимен, а вы говорите про единственное число woman, которое действительно звучит как вумен
@@selfedu_rus , извините. тогда ещё path - произноситься как пэс
@@user-rl7dv8qn7z транскрипция для path - [pɑːθ]
@@selfedu_rus , ну так это пэс
@@user-rl7dv8qn7z не совсем, пэс - это вот так [pэs]
так покрасивее будет)
if settings.DEBUG:
import debug_toolbar
urlpatterns.append(path('__debug__/', include(debug_toolbar.urls)))
У меня не хотел работать, со всеми верными настройками, решил проблему так:
Переходим в реестр windows(Можно нажать Win+R и написать regedit или просто в поиске найти редактор реестра )
Потом переходим в папку HKEY_CLASSES_ROOT в ней находим расширение .js нажимаем на эту папочку и справа есть три свойства(или вставте в строку поиска HKEY_CLASSES_ROOT\.js)
В Content Type прописываем в значение text/javascript.
Переходим в браузер чистим кеш, перезапускаем сервер и все должно работать можно перезапустить еще комп
Спасибо! И как ты только до этого додумался...
да, все сработало, спасибо)
А как оптимизировать запросы к базе данных, если 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',)
Оптимизирует выборку регионов, но страны будут выбираться при каждой итерации заново.
В общем, сам разобрался. В views.py прописал для класса
def get_queryset(self):
return super().get_queryset().all().values("city__region__country__name", )
Обратите внимание на двойные подчеркиавния.
Вот такая ошибка, уже и не знаю что и делать(((
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'"""
Спасибо!