Российский Новый Университет
Опубликован: 25.01.2016 | Доступ: свободный | Студентов: 2234 / 161 | Длительность: 16:40:00
Лекция 13:

Искусство отладки

< Лекция 12 || Лекция 13: 12 || Лекция 14 >

Отладка

Отладка — это процесс поиска и устранения ошибок (багов). Когда мы разрабатываем веб-приложения с помощью Django, у нас часто появляется необходимость знать значения переменных, отправленных в запросе AJAX.

Инструментами для отладки являются:

  • Отладочная панель Django
  • IPDB (интерактивный отладчик)

Отладочная панель Django

Это набор панелей, используемый для отображения различных сведений о запросе / ответе текущей страницы и раскрывающий больше подробностей при нажатии на панель.

Вместо того чтобы просто отображать отладочную информации в HTML комментариях, отладочная панель Django отображает его более продвинутым способом.

Установка отладочной панели Django

Чтобы установить отладочную панель Django, выполните следующую команду:

pip install django-debug-toolbar

После установки нам нужно сделать изменения в базовой конфигурации, чтобы увидеть отладочную панель Django.

Добавьте параметр debug_toolbar к переменной INSTALLED_APPS в файле settings.py:

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'user_profile',
    'tweet',
    'social.apps.django_app.default',
    'tastypie',
    'debug_toolbar',
)

Это более чем достаточно для простого проекта Django. Отладочная панель Django будет автоматически корректировать себя, когда сервер запущен в режиме разработки.

Перезапустите сервер.Как вы можете видеть, в правой часть профиля пользователя есть панель. Отладочная панель Django имеет много панелей, из них есть некоторые, установленные по умолчанию, как мы видим на предыдущем скриншоте, а некоторые являются сторонними, которые могут быть установлены по желанию.

Теперь мы обсудим панели, установленные по умолчанию:

VersionPath: debug_toolbar.panels.versions.VersionsPanel. Эта панель показывает основную информацию, такую как версию Python, Django и других установленных приложений, если такая информация доступна

Использование ресурсов: Показывает потребление ресурсов Django на машине сервера.

Тайминг браузера: Показывает детали на клиентской стороне. Время запроса и ответа имеют жизненно важное значение для знания, может ли фрагмент кода быть оптимизирован, и можно посмотреть загрузку, если слишком большое отображение замедляет получаемые страницы.

SettingsPath:debug_toolbar.panels.Settings.SettingsPanel. 

Список параметров которые определены в файле settings.py являются заголовками

Path: debug_toolbar.panels.headers.HeadersPanel	

Эта панель показывает переменные фреймворка, начиная от переменных представлений, которые так же являются переменными ratancs; затем Cookies, Session, переменные GET, POST, они могут быть полезны при отладке форм отправки.

SqlPath: debug_toolbar.panels.sql.SQLPanel

Эта панель очень важна, так как содержит SQL-запросы, создаваемые к базе данных при запросе страницы. Это очень помогает во время масштабирования приложения, запросы могут быть здесь просмотрены и скомбинированы вместе, чтобы уменьшить промахи по базе данных и улучшить производительность запроса страницы.

Показывается также фрагмент кода, который делает SQL-запрос, что очень полезно при отладке приложения.

StaticFilesPath: debug_toolbar.panels.staticfiles.StaticFilesPanel
TemplatePath: debug_toolbar.panels.templates.TemplatePanel

Это показывает нам список шаблонов и контекста, связанного с данным запросом

CachePath: debug_toolbar.panels.cache.CachePanel

Если мы включили кэш. то здесь отобразятся детали кэш-попаданий по данному URL-адресу

SignalPath: debug_toolbar.panels.signals.SignalsPanel

Эта панель показывает список сигналов и их аргументов и получателей

LoggingPath: debug_toolbar.panels.logging.LoggingPanel

Если вы включили протоколирование, эта панель отобразит сообщения журнала, как показано на следующем скриншоте:

RedirectPath: debug_toolbar.panels.redirects.RedirectsPanel

Когда присутствует страница перенаправления на URL-адрес, включите ее для отладки промежуточной страницы. Как правило вы не можете отладить URL перенаправления, таким образом, по умолчанию эта функция отключена

IPDB - интерактивный способ перебора ошибок

Ipdb — интерактивный отладчик исходного кода для Python программ.

Выполните следующую команду, чтобы установить Ipdb:

pip install ipdb

Ipdb является интерактивным способом отладки приложения Python. После установки Ipdb, для использования его в любой функции, просто напишите следующий код:

import ipdb; ipdb.set_trace()

Эта магическая строка остановит вся выполнение Django, где этот код присутствует и даст вам активную консоль, где вы можете отыскать баги или проверить значение переменной в режиме реального времени.

Сочетания клавиш для ipdb (когда вы находитесь в активной консоли):

n: следующий элемент

ENTER: Повторить предыдущее

quit: выход

p <variable>: Печатает значение

c: продолжить

l: список, где вы находитесь

s: шаг в подпрограмме

r: продолжать до конца подпрограммы

!<python command="">: Выполнить команду Python внутри активной консоли

Можно сделать больше, чем то, что рассматривается в настоящей лекции. Вам были даны основы отладки, которые мы собираемся использовать в наших проектах Django. Вы узнали, как войти и отладить наш код для лучшей и более эффективной практики кодирования. Мы также узнали, как использовать Ipdb для больших возможностей отладки.

В следующей лекции вы узнаете о различных способах развертывания наших проектов Django.

Контрольные вопросы

  1. Для чего необходимо использовать отладку?
  2. Какие команды доступны для интерактивного отладчика?
  3. Какие панели администратора и с какими функциями вы можете назвать?
  4. Что такое протоколирование?
  5. Какие категории модуля logging существуют?

Упражнения

Упражнение 1.

Установите панель MOngoDB

Упражнение 2.

Установите панель Template Profiler

Упражнение 3.

Установите панель User

Упражнение 4.

Установите панель Template Timings

Список рефератов

  • Особенности отладки web-приложений
  • Обзор сторонних панелей отладки
  • Расширенный обзор IPDB
  • Искусство консольной отладки
  • Журналирование при разработке веб-сервисов
  • Фильтрация в работе веб-проектов
  • Принципы промышленной веб-разработки
  • Отладка веб-приложения и его учет при разработке технического задания
  • Безопасность веб-приложения на этапе эксплуатации. Журналирование.
  • Отладка кода как часть тестирования программного кода

Краткие итоги

  • ознакомились с особенностями отладки Django
  • рассмотрели понятие протоколирования
  • научились использовать интерактивный отладчик
  • ознакомились с отладочной панелью
  • Рассмотрели назначение каждой из отладочной панелей
  • Ознакомились с Модулем Python logging
  • Изучили функции для ведения журналов отчетов
  • рассмотрели основные команды IPDB
  • рассмотрели способ установки отладочной панели
  • реализовали код перенаправления пользователя
< Лекция 12 || Лекция 13: 12 || Лекция 14 >
Константин Боталов
Константин Боталов

Вроде легкие вопросы и ответы знаю правильные, но система считает иначе и правильные ответысчитает неправильными. Приходится выполнть по несколько раз. Это я не правильно делаю или тест так составлен?

Владимир Филипенко
Владимир Филипенко

Листинг показывает в 4-ой лекции, что установлен Django 1.8.4. Тут же далее в этой лекции указаны настройки, которые воспринимает Django 1.7 и младше.