Django # Грабли с отловом exceptions в декорированных views # Debug output for decorated views fails
Нашел грабли :) Надо будет сделать баг-репорт, но пока - просто workaround.
Грабли - если view задекорирован и в нем возникает ошибка, то джанга не всегда правильно обрабатывает traceback - дебажный вывод не показывает, точнее слетает в самом дебажном выводе :)
Пример:
from decorators import render_to
@render_to('main.html')
def main_view(request):
# тут что-то пошло не так
raise Exception('AAA!!!')
return context
Так вот, чтобы дебажный вывод работал правильно (как обычно), render_to должен быть объявлен:
- либо в этом же модуле view
- либо в другом package’е
Если render_to импортится из того же package, что и view, то дебажный вывод сходит с ума и не может правильно определить, в каком файле произошла ошибка.
То есть, вот так - сломается: есть views.py, где лежат views, и рядом decorators.py, в котором объявлен render_to.
Работает - так (main_view должен быть не в myproject.utils :)
from myproject.utils.decorators import render_to # ...