Django Rest Framework调试发布和放置请求

时间:2016-09-02 08:21:31

标签: django django-rest-framework django-debug-toolbar

我使用DRF扩展名为se json列表进行模型,我可以使用GET POST请求进行调试,但如何调试PUTINSTALLED_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; } 时,它不会向我显示工具栏。

4 个答案:

答案 0 :(得分:13)

我找到django-silk来调试DRF。

https://github.com/django-silk/silk/

答案 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数据。

对于POSTPUT验证错误的快速本地调试(例如,在出现HTTP状态400的情况下),我想在{{1}中的Field.run_validators()的结尾处中断},然后查看其中的错误消息。