在 Django 500 中显示 request.DATA 由 Rest Framework 引起的错误

gui*_*iot 3 django debugging django-rest-framework

我已经使用 Django Rest Framework 构建了一个 API,但是我遇到了错误日志记录的问题,它不会显示从 AJAX 调用发送到 API 的原始 POST 数据。现在我知道 Rest Framework 使用 request.DATA 来解析 POST 数据,但是我很难在 Django 错误日志中获取这些数据,这使得调试实时应用程序变得困难。

例如,我发送以下 POST 调用:

...    
Request Payloadview source
{start:2014-07-16, end:2014-08-18}
    end: "2014-08-18"
    start: "2014-07-16"
Run Code Online (Sandbox Code Playgroud)

在 Django 错误日志中,我得到:

...
GET: No GET data
POST: No POST data
FILES: No FILES data
...
Run Code Online (Sandbox Code Playgroud)

如果我能在错误日志中看到哪些数据最初是通过 AJAX 调用提交的,那就太好了。我尝试自定义 Rest Framework 异常处理程序,但它没有捕获 Django 中发生的 500 错误。

Mar*_*hyn 5

有一个适用于 Django 1.9+ 和 Rest Framework 3.4 的版本

from rest_framework import permissions
from rest_framework.views import exception_handler


def custom_exception_handler(exc, context):
    response = exception_handler(exc, context)

    if response is None and context['request'].method not in permissions.SAFE_METHODS:
        context['request']._request.POST = context['request'].data

return response
Run Code Online (Sandbox Code Playgroud)