【问题标题】:Django Rest Framework debug post and put requestsDjango Rest Framework 调试发布和提交请求
【发布时间】:2017-01-10 06:53:34
【问题描述】:

我使用 DRF 扩展来设置模型的 json 列表,我可以使用 debug-toolbar 调试 GET 请求,但是如何调试 POSTPUT 请求?

我有这个用于调试模式的设置:

INSTALLED_APPS += ('debug_toolbar',)

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

DEBUG_TOOLBAR_PATCH_SETTINGS = False
INTERNAL_IPS = (
    '127.0.0.1'
)

现在,当我在调试工具栏中尝试使用 Intercept redirects 时,当我使用 POST 时,它不会显示工具栏。

【问题讨论】:

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


【解决方案1】:

我找到了django-silk 用于调试 DRF。

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

【讨论】:

  • 获取中间件问题 找不到记录器“silk.middleware”的处理程序
  • 你是如何使用 django-silk 调试 DRF 的?我正在终端上运行测试以测试我的 DRF 端点,我得到 400,但不知道为什么更详细
  • 我还在使用 django 1.9 所以 django-silk 不适合我
【解决方案2】:

如果您需要拦截请求/响应并应用您自己的处理,那么您可以按照this answer 中的说明添加您的自定义 mixin。

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

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】:

    在本地机器上进行交互式调试时,我喜欢通过在rest_framework.generics 中插入相关的put()post() 方法来检查request 数据。

    为了快速本地调试POSTPUT 验证错误(例如,在http 状态400 问题的情况下),我喜欢在rest_framework.fields 中的Field.run_validators() 结尾处中断并检查那里的错误消息。

    【讨论】:

      【解决方案4】:

      您不能在 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
          ...
      

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

      【讨论】:

        猜你喜欢
        • 2020-03-12
        • 2021-12-15
        • 1970-01-01
        • 1970-01-01
        • 2015-06-18
        • 1970-01-01
        • 1970-01-01
        • 2019-11-22
        • 2019-05-04
        相关资源
        最近更新 更多