gpt4 book ai didi

python - 如何调试Django请求 "POST/url/HTTP/1.1"400

转载 作者:太空宇宙 更新时间:2023-11-03 11:25:30 25 4
gpt4 key购买 nike

我正在使用 django + django-rest-framework

我正在从 ios 应用程序向本地 python 服务器发送 POST 请求,并收到 400 错误代码。我知道问题出在我发送的 json 正文中,我想在某个地方输出完整的 POST 请求,但我没有运气。

[13/Jan/2016 22:48:45] "POST /url/ HTTP/1.1" 400 75

我不明白在运行服务器后如何打印任何东西(最简单的方法)。有可能吗?

我尝试启用 logging在设置中,但也没有运气。

LOGGING = {
'version': 1,
'handlers': {
'console':{
'level':'DEBUG',
'class':'logging.StreamHandler',
},
},
'loggers': {
'django.request': {
'handlers':['console'],
'propagate': True,
'level':'DEBUG',
}
},
}

import logging.config
logging.config.dictConfig(LOGGING)

我还安装了django debug toolbar但它也没有显示我发送的请求。我也尝试返回 HttpResponse 但仍然没有收到 POST 请求数据。

在 django 或 django-rest-framework 的某个地方输出请求数据(控制台、文件或其他任何东西)的方式是什么?

已修复:

我在 views.py 中添加了中间件,它扩展了我的控制台输出,如下所示:

class ExceptionLoggingMiddleware(object):
def process_request(self, request):
print request.body
print request.scheme
print request.method
print request.META
return None

并且不要忘记像这样将这个中间件添加到您的设置文件中

MIDDLEWARE_CLASSES = [
'movie.views.ExceptionLoggingMiddleware']

据我所知,我通过设置文件创建的 LOGGING 工作正常,但它输出的信息不多,只是一些 sql 警告。

最佳答案

执行此操作的快速'n'dirty 方法是将调试添加到请求处理程序的入口点。在 DjangoRestFramework 类以及基于 Django 类的 View 中,此入口点是 dispatch() 方法。

你可以这样做:

class MyView(View):
def dispatch(self, request, *args, **kwargs):
import pdb; pdb.set_trace() # or print debug statements
super(MyView, self).dispatch(request, *args, **kwargs)

关于python - 如何调试Django请求 "POST/url/HTTP/1.1"400,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34791769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com