РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗pydjPmBsDg 8 of 187 menu

Отладка в Django

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

Отладочный код обычно ставят внутрь функции-представления в файле views.py. Затем открывают нужную страницу в браузере, а результат смотрят в терминале, где запущен runserver.

Функция print

Самый простой способ отладки - вывести данные через print. Представьте, что у вас есть представление index и вы хотите узнать метод запроса и путь страницы. Добавьте print прямо в функцию:

from django.http import HttpResponse def index(request): print(request.method) print(request.path) return HttpResponse('text')

Сохраните файл, убедитесь, что сервер запущен командой runserver, и откройте страницу этого представления в браузере. В самом браузере вы по-прежнему увидите текст 'text', а вот в терминале появятся строки вроде 'GET' и '/'.

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

Функция breakpoint

Иногда одного вывода мало: нужно остановить код прямо на месте и спокойно посмотреть переменные. Для этого вставьте вызов breakpoint() в то место, где хотите остановиться:

from django.http import HttpResponse def index(request): name = 'user' breakpoint() return HttpResponse(name)

Снова откройте страницу в браузере. Страница «зависнет» в ожидании, а в терминале с runserver откроется отладчик. Курсор будет стоять на строке с breakpoint().

Теперь в этом терминале можно смотреть переменные. Например, введите команду p name - увидите значение 'user'. Команда p request.method покажет метод запроса.

Когда закончите смотреть, введите c и нажмите Enter - код продолжит работу, и браузер получит ответ страницы.

После отладки не забудьте убрать breakpoint() из кода, иначе страница будет останавливаться при каждом заходе.

Консоль shell

Бывает, что страницу открывать не нужно: вы хотите просто проверить кусок кода Django в консоли. Для этого есть команда shell:

python manage.py shell

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

2 + 2 print('hello')

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

Выйти из консоли можно командой exit() или сочетанием клавиш Ctrl+D.

Практические задачи

Расскажите, в чем разница между print и breakpoint() и когда что удобнее.

Откройте Django shell и выполните в нем любое простое выражение, например сложение чисел. Затем выйдите из консоли.

Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить