我使用DRF扩展名为se json列表进行模型,我可以使用GET
POST
请求进行调试,但如何调试PUT
和INSTALLED_APPS += ('debug_toolbar',)
MIDDLEWARE_CLASSES += ('debug_toolbar.middleware.DebugToolbarMiddleware',)
DEBUG_TOOLBAR_PATCH_SETTINGS = False
INTERNAL_IPS = (
'127.0.0.1'
)
请求?
我在调试模式下进行设置:
Intercept redirects
现在,当我在调试工具栏中尝试使用POST
时,当我执行.callout::before {
box-sizing: border-box;
height: 100%;
content: "";
position: absolute;
right: -0.2em;
padding: 1em;
background: inherit;
border: inherit;
border-right: 0;
border-bottom: 0;
transform: rotate(45deg);
z-index: -1;
}
时,它不会向我显示工具栏。
答案 0 :(得分:13)
我找到django-silk
来调试DRF。
答案 1 :(得分:0)
你无法拦截DRF可浏览api中的重定向,因为它是ajax并通过javascript调用。由于ajax调用,工具栏也未显示。作为解决方法,您可以debug_toolbar.middleware.DebugToolbarMiddleware#process_request
中的临时注释行禁用ajax调用中的工具栏:
...
# Don't render the toolbar during AJAX requests.
# if request.is_ajax():
# return
...
重定向仍然无效,但工具栏可见。
答案 2 :(得分:0)
如果您需要拦截请求/响应并应用自己的处理,则可以按照this answer中的说明添加自定义混合。
但是在最简单的情况下,假设您使用python requests做一个测试POST请求(或PUT):
import requests
response = requests.post('http://localhost:8000/person', json={"name": "dinsdale"})
然后您可以通过
得到错误消息。print(response.text)
在大多数情况下,输出将包含您要查找的失败原因,例如'age' is required
。
您还可以通过终端上的curl
做同样的事情:
curl -vv --header "Content-Type: application/json" \
--request POST \
--data '{"name":"dinsdale"}' http://localhost:8000/person/
答案 3 :(得分:0)
在本地计算机上进行交互式调试时,我喜欢通过破坏request
中相关的put()
或post()
方法来检查rest_framework.generics
数据。
对于POST
或PUT
验证错误的快速本地调试(例如,在出现HTTP状态400的情况下),我想在{{1}中的Field.run_validators()
的结尾处中断},然后查看其中的错误消息。