Отладка в 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 и выполните
в нем любое простое выражение,
например сложение чисел. Затем
выйдите из консоли.