Чем сложнее проект, тем больше вопросов: как это всё работает и откуда вдруг взялась ошибка. У врачей есть УЗИ, рентген и томограф; зрение Супермена позволяет видеть вещи насквозь. У программиста есть тесты и страница ошибок, но если ошибки нет, а сайт ведёт себя не так, как ожидалось — хочется обзавестись молотом Тора.
Супероружие Django — это приложение django-debug-toolbar (сокращённо DjDT). Установите его с помощью pip:
(venv) $ pip install django-debug-toolbar
Зарегистрируйте в settings.py новое приложение:
# Инструмент будет работать только в режиме разработки:
DEBUG = True
# Добавьте в этот список новое приложение
INSTALLED_APPS = [
# Приложение staticfiles необходимо для работы приложения DjDT
'django.contrib.staticfiles',
# ...
'debug_toolbar',
]
# Добавьте новое приложения для обработки запросов
MIDDLEWARE = [
# ...
'debug_toolbar.middleware.DebugToolbarMiddleware',
]
# Добавьте IP адреса, при обращении с которых будет доступен DjDT
INTERNAL_IPS = [
'127.0.0.1',
]
В головной файл urls.py добавьте новое правило для режима отладки:
from django.conf import settings
# У вас уже есть это условие
if settings.DEBUG:
import debug_toolbar
urlpatterns += (path('__debug__/', include(debug_toolbar.urls)),)
Откройте сайт — и у вас появится новая панель:
Теперь вам доступна груда информации о том, как шла отрисовка текущей страницы. Например, вот список запросов, которые выполнялись перед отображением главной страницы:
Каждый запрос можно рассмотреть подробнее (кнопка Sel) или узнать, какие индексы и какой план запроса был сформирован для получения данных (кнопка Expl, от explain).
Большинство Django-программистов подключают DjDT к своим проектам по умолчанию, это упрощает разработку и помогает избежать многих проблем.