Django Rest框架调试post和put请求

Django Rest框架调试post和put请求,django,django-rest-framework,django-debug-toolbar,Django,Django Rest Framework,Django Debug Toolbar,我使用DRF扩展为模型使用se json列表,在那里我可以使用debug toolbar调试GET请求,但是如何调试POST和PUT请求 我在调试模式下有以下设置: INSTALLED_APPS += ('debug_toolbar',) MIDDLEWARE_CLASSES += ('debug_toolbar.middleware.DebugToolbarMiddleware',) DEBUG_TOOLBAR_PATCH_SETTINGS = False INTERNAL_IPS = (

我使用DRF扩展为模型使用se json列表,在那里我可以使用
debug toolbar
调试
GET
请求,但是如何调试
POST
PUT
请求

我在调试模式下有以下设置:

INSTALLED_APPS += ('debug_toolbar',)

MIDDLEWARE_CLASSES += ('debug_toolbar.middleware.DebugToolbarMiddleware',)

DEBUG_TOOLBAR_PATCH_SETTINGS = False
INTERNAL_IPS = (
    '127.0.0.1'
)

现在,当我在调试工具栏中尝试使用
截获重定向时,当我在调试DRF时,它不会显示工具栏


您无法在DRF browsable api中拦截重定向,因为它是ajax,通过javascript调用。由于ajax调用,工具栏也没有显示。作为解决方法,您可以在
debug_-toolbar.middleware.debugtoolbar-middleware#process_请求
中临时添加注释行,以禁用ajax调用中的工具栏:

    ...
    # Don't render the toolbar during AJAX requests.
    # if request.is_ajax():
    #     return
    ...

重定向仍然不起作用,但工具栏将可见。

如果需要拦截请求/响应并应用自己的处理,则可以按照中所述添加自定义混合

但在最简单的场景中,假设您使用python执行测试POST请求(或PUT):

导入请求
response=requests.post('http://localhost:8000/person,json={“name”:“dinsdale”})
然后,您可以使用获取错误消息

打印(response.text)
在大多数情况下,输出将包含您正在查找的故障原因,例如,
“年龄”是必需的

您也可以从终端对
curl
执行相同的操作:

curl-vv--header“内容类型:application/json”\
--请帖\
--数据“{”名称“:“dinsdale”}”http://localhost:8000/person/

在本地机器上交互调试时,我喜欢通过在
rest\u framework.generics
中插入相关的
put()
post()
方法来检查
请求
数据


对于
POST
PUT
验证错误的快速本地调试(例如,在http状态400问题的情况下),我喜欢在
字段的末尾断开。运行\u validators()
rest\u framework.fields
中,检查那里的错误消息。

在我使用api时亲自检查这一点。调试/code的最佳方法是编写测试设置中间件问题无法找到记录器“silk.middleware”的处理程序您如何使用django silk调试DRF?我正在终端上运行测试来测试我的DRF端点,我得到了400而不知道更详细的原因我仍然在使用django 1.9,所以django silk不适合我