Mir*_*lic 10 django django-debug-toolbar django-rest-framework
我使用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'
)
Run Code Online (Sandbox Code Playgroud)
现在,当我Intercept redirects在调试工具栏中尝试时,它不会显示我的工具栏POST.
如果您需要拦截请求/响应并应用您自己的处理,那么您可以按照此答案中的描述添加自定义混合。
但在最简单的场景中,假设您使用 python requests执行测试 POST 请求(或 PUT) :
import requests
response = requests.post('http://localhost:8000/person', json={"name": "dinsdale"})
Run Code Online (Sandbox Code Playgroud)
然后你可以得到错误消息
print(response.text)
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,输出将包含您正在寻找的失败原因,例如'age' is required。
curl您还可以从终端执行相同的操作:
curl -vv --header "Content-Type: application/json" \
--request POST \
--data '{"name":"dinsdale"}' http://localhost:8000/person/
Run Code Online (Sandbox Code Playgroud)
您无法在 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
...
Run Code Online (Sandbox Code Playgroud)
重定向仍然不起作用,但工具栏将可见。
| 归档时间: |
|
| 查看次数: |
9634 次 |
| 最近记录: |