About Blog Dev | Alfa Romeo SZ Conkeror wishlist

Дебаг Джанги

Как проходит дебаг джанги обычно? В 90% случаев хватает внимательно изучить желтенький джанговский трейсбек ошибки, со всеми переменными и кодом, ещё в 9% хватает расставить print‘ы, а в совсем запущенных случаях приходит на помощь winpdb.

Но после одной отличной новости можно значительно облегчить себе жизнь - перестать расставлять print’ы, перестать изучать трейсбеки досконально и отказаться от удалённого дебаггера, заодно показав язык Pylons’ам, в которых такая штука есть давно. :-)

Вообще я этот пост прочёл и пролистал, когда он появился неделю назад. А тут случайно наткнулся на него ещё раз и решил попробовать. Фантастика! :-) Встречайте - консоль прямо в трейсбеке. :) Я сделал скрин (250 кб) моих первых шагов в неизведанное. ;-)

Рекомендую. Офигенская штука. Сам по себе werkzeug небольшой, стартует быстро (быстрее джанги), проблем не вызывает и вообще… просто красота теперь. :)

Add post to: Delicious Reddit Slashdot Digg Technorati Google
Comment

Pingbacks

Pages tagged "piranha" @www.blogbookmarker.com 20.03.2008 5:30
| piranha.org.ua     Nobody can be sad on Aqaurium day!!! saved by 5 others     Talonguard23 bookmarked on 03/19/08 | paintlenore.wordpress.com     South American Blunders » Santa-Thelma Ranch saved by 7 others     Julesmar

Comments

NilColor 17.12.2007 14:19

Привет. А можно немного подробнее - как это заработало?
У меня все остановилось на

django.core.exceptions.ImproperlyConfigured Error importing middleware django.contrib.sessions.middleware: "No module named tsm" /var/lib/python-support/python2.4/django/core/handlers/base.py in load_middleware, line 31

гугление особо ответов не дало - там в основном это касалось апача. а тут же апач не виноват ниразу…

reply
Александр Соловьёв 17.12.2007 16:10

А какой версии Django? Werkzeug стоит же? (на всякий случай спрашиваю - я что-то вообще не могу упоминаний про tsm найти)

reply
Dyadya Zed 19.12.2007 3:57

А как это под виндой можно поставить, чтоб все проекты можно было дебужить (а не копировать каждый раз django-run-debagged.py в каталог проекта и ставить переменную DJANGO_SETTINGS_MODULE)?

Кидает ошибку Could not import settings d:\python25\scripts\test\settings.py (Is it on sys.path? Does it have syntax errors?): No module named d:\python25\scripts\test\settings.py

Модуль такой есть! d:\python25\scripts\test\settings.py

reply
Александр Соловьёв 19.12.2007 10:42

Нуу… я копирую скрипт werkzeug-debugged.py в каталоги проектов (рядом с settings.py) и не парюсь. Он, правда, чуть изменён относительно оригинала, но не сильно. Выглядит так:

#!/usr/bin/env python
import os

from werkzeug import run_simple, DebuggedApplication
from django.views import debug
from django.core.handlers.wsgi import WSGIHandler

def null_technical_500_response(request, exc_type, exc_value, tb):
    raise exc_type, exc_value, tb
debug.technical_500_response = null_technical_500_response

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

if __name__ == '__main__':
    run_simple('localhost', 8080, DebuggedApplication(WSGIHandler(), True), True)

P.S.Чтоб пути выглядели нормально, можно обрамлять их символами ` :-)

reply
Dyadya Zed 19.12.2007 16:13

хммм.. Запускаю обновленную версию, ругается на Error while importing URLconf ‘test.urls’: No module named test.urls

в settings.py - ROOT_URLCONF = ‘test.urls’, ладно меняю на ROOT_URLCONF = ‘urls’, дальше ругается на Error while importing URLconf ‘urls’: No module named test.views

Как бы это все заимпортить, чтоб не переписывать кучу настроек? Пробовал сделать еще такое:

os.environ['PATH'] = 'd:\python25\scripts\test'+';%PATH%'

но не помогло ни разу :(

P.S.Спасибо, пути поправил

reply
Александр Соловьёв 19.12.2007 18:18

Напиши вместо 'settings' - 'test.settings'. Я просто никогда не использую имя проекта в импортах.

reply
Стас 19.12.2007 16:28

Рулез !

reply
Dyadya Zed 19.12.2007 17:52

Вот только так это чудо заработало у меня под windows:

#!/usr/bin/env python
import os, sys
from os.path import abspath, dirname

from werkzeug import run_simple, DebuggedApplication
from django.views import debug
from django.core.handlers.wsgi import WSGIHandler

def null_technical_500_response(request, exc_type, exc_value, tb):
    raise exc_type, exc_value, tb
debug.technical_500_response = null_technical_500_response

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

path = os.path.abspath(dirname(dirname(abspath(__file__))))
sys.path.append(path)

if __name__ == '__main__':
    run_simple('localhost', 8080, DebuggedApplication(WSGIHandler(), True), True)

Что-то не разобрался, как включается подсветка кода, сорри..

reply
Александр Соловьёв 19.12.2007 18:21

Что-то не разобрался, как включается подсветка кода, сорри..

Автоматом.

reply
Владимир Володин 15.02.2008 13:27

О, спасибо! У меня тоже только после этого заработало.

reply
Владислав 8.02.2008 17:37

Здравствуйте.

При запуске этого дебагера вываливается:

Traceback (most recent call last): File “[HTML_REMOVED]”, line 1, in [HTML_REMOVED] File “/home/Werkzeug-0.1/werkzeug/init.py”, line 118, in getattr module = import(object_origins[name], None, None, [name]) File “werkzeug/debug/init.py”, line 16, in [HTML_REMOVED] from werkzeug.debug.render import debug_page, load_resource File “werkzeug/debug/render.py”, line 34, in [HTML_REMOVED] t_body = get_template(‘body.tmpl’) File “werkzeug/debug/render.py”, line 20, in get_template unicode_mode=False) File “werkzeug/templates.py”, line 411, in from_file f = open(file, ‘r’) IOError: [Errno 2] No such file or directory: ‘werkzeug/debug/shared/body.tmpl’

reply
Александр Соловьёв 10.02.2008 16:10

Не могу сказать ничего определённого, кроме того, что werkzeug не может найти свой темплейт… Может стоит проверить, как он установлен… А вообще такое лучше спрашивать у авторов, на irc.freenode.net, канал #pocoo.

reply

Comment form for «Дебаг Джанги»

Required. 30 chars of fewer.

Required.