gpt4 book ai didi

python - Django: 'WSGIRequest' 对象没有属性 'PUT'

转载 作者:行者123 更新时间:2023-12-01 04:18:27 26 4
gpt4 key购买 nike

def my_view(request, someid=None):
if request.method == 'GET':
# do stuff
return HttpResponse({})

elif request.method == 'PUT':
print request.body
print request.PUT

print json.loads(request.body)

return HttpResponse({})

这是我的观点,我正在发出 PUT 请求(使用 Postman-an api 模拟器) x-www-form-urlencode

当我这样做时request.body它以 a=1&b=2&c=3 的形式打印我发送的所有数据。所以当我这样做时json.loads(request.body) ,它会引发值错误,no json object could be decoded 。这是可以理解的。 json.loads 需要一个 json 数据。

但是当我打印request.PUT时它说object has no attribute PUT 。我们通常这样做request.GETrequest.POST , 正确的?但为什么不“PUT”呢?

所以我有两个问题-

1) 我该如何转换这个 request.body格式化成python字典?

2 为什么我无法打印 request.PUT

我什至尝试过request.POST在“PUT” block 中,但它是空的。

这里也有人问过类似的问题 ValueError: No JSON object could be decoded - Django request.body

但它并不完全相同,这可能在 POST block 中存在问题。

除此之外,我需要request.body,我不想手动提取像

这样的字段
put = QueryDict(request.body)
description = put.get('description')
...

有很多字段,所以我不能这样做。

最佳答案

试试这个

from django.http import QueryDict
qd = QueryDict(request.body)
put_dict = {k: v[0] if len(v)==1 else v for k, v in qd.lists()}

。 现在您可以通过 **put_dict

直接更新对象

或者

一个内衬

put_dict = {k: v[0] if len(v)==1 else v for k, v in QueryDict(request.body).lists()}

关于python - Django: 'WSGIRequest' 对象没有属性 'PUT',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34024650/

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