2012-06-22 8 views
2

Мне очень нравится Python, потому что я могу использовать его оболочку для изучения вещей.Можно ли использовать showPythonShell для отладки Django?

Возможно ли это сделать при разработке приложения django?

Я имею в виду, это можно сделать:

def process_request(request): 
    ... 
    if(request.FILES != none): 
     __builtins__.debug_request = request 
     showPythonShell(); 
    ... 

так что я могу экспериментировать с просьбой?

спасибо: D

+0

что-то вроде: manage.py shell? https://docs.djangoproject.com/en/1.4/topics/testing/#module-django.test.client – monkut

+0

@monkut хорошо, да !!! но я также хочу получить ACTUAL http-запрос от клиента, а затем выйти в оболочку python, чтобы я мог исследовать запрос. – user269334

+0

Вы ищете контрольные точки (http://v3.mike.tig.as/blog/2010/09/14/pdb/)? – arie

ответ

3

Установите ipython и заменить showPythonShell() с:

from IPython import embed; embed(); 

Это будет делать именно то, что вы ожидаете, т.е. запустить ipython оболочку изнутри ваш оператор if. Преимущества наличия оболочки ipython - выполнение вкладок, магические функции и т. Д., Как описано here. Я развиваюсь в python довольно давно, и это прежде всего метод, который я использую для отладки всего, включая django.

3

Это может быть сделано с помощью питона отладчика: pdb

Или еще лучше ipdb, который дает автодополнению, подсветку синтаксиса и другие IPython функции.

if(request.FILES != none): 
    import ipdb; ipdb.set_trace() 

Как только линия будет достигнута, вы попадете в отладочную оболочку, где сможете проверить запрос. Проверьте документы pdb для всех available commands.

Вот очень хороший блог объяснить все детали: http://aymanh.com/python-debugging-techniques

Смежные вопросы