2013-02-12 5 views
0

Я пришел с php-фона и мне понравилось, что я могу делать var_dump практически в любом месте кода и получать результаты.Отладка в django/python

В python/django, если я использую оболочку (./manage.py shell), я могу отлаживать методы таким образом, но это не так быстро.

+1

Возникли вопросы здесь? – Blender

+1

«Я родом из php-фона» - извините. – Jordan

+0

Вы можете «распечатать» или «отпечатать» «почти в любом месте кода» в python. – jpic

ответ

3

В PHP вы, вероятно, были использованы для расширения awesome xdebug.

В Python, нерест классический отладчик (поместить это в любом месте вы бы поставить xdebug_break():

import pdb; pdb.set_trace() 

Мой любимый с модулем IPDB (pip install ipdb):

import ipdb; ipdb.set_trace() 

Вы можете также используйте werkzeug (pip install werkzeug) и django-extensions (pip install django-extensions и добавьте django_extensions в settings.INSTALLED_APPS), который предоставляет команду runserver_plus.

Это действительно, очень здорово. Это одна из вещей, которые, вероятно, заставят вас больше не оглядываться на php. Во всяком случае, runserver_plus похож на runserver, но он заменит страницу django stacktrace по умолчанию с интерактивной оболочкой ajax, доступной для каждого кадра stacktrace. Конечно, вы можете получить его, добавив что-то вроде crash или random_undefined_variable_name в любом месте вашего кода.

+1

+1 для django_extensions – Silwest

1

Python имеет потрясающий шаг через отладчик под названием pdb. Если запустить Django на переднем плане, используя встроенный веб-сервер для разработки, вы можете бросить заявления в своем коде, как

import pdb; pdb.set_trace() 

и других PDB команд, и это поставит вас в отладчик. Для этого также есть django plugin.