У меня была похожая проблема, но опция промежуточного программного обеспечения мне не помогла. Причина в том, что я использую django-jsonview 0.4.3, который предоставляет декоратор, который преобразует словарь в действительный http-ответ json, даже когда декорированная функция завершается ошибкой, поэтому метод промежуточного программного обеспечения process_exception никогда не вызывается. Я проверил код этого декоратора, и кажется, что он пытается записать ошибку, делая это:
...
except Exception as e:
logger = logging.getLogger('django.request')
logger.exception(unicode(e))
Однако я не знаю почему, это не работает, и в моей консоли bash ничего не регистрируется. Я должен выяснить, почему это происходит. Тем временем я использую дополнительный декоратор:
def log_errors(func):
if not settings.DEBUG:
return func
def wrapper(request, *args, **kwargs):
try:
return func(request, *args, **kwargs)
except:
print traceback.format_exc()
return wrapper
Тогда во всех моих представлениях json:
@json_view
@log_errors
def my_view(request):
....