Django Rest框架调试post和put请求
我使用DRF扩展为模型使用se json列表,在那里我可以使用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 = (
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不适合我