10

是否可以在 Django 中检索 HTTP PATCH 请求的请求参数?request.method == 'PATCH'被识别,但我很难检索请求有效负载。我试过request.REQUEST.items()了,但这不包含任何数据。我知道我可以使用 Django-tastypie,但在这种情况下,我想避免使用它(而且我认为tastypie 无论如何都在使用一些 Django 方法来检索这些数据)。

我正在使用 Django 1.5.1。

4

4 回答 4

9

您可以手动使用 QueryDict 类。这是在 django 中实现的类,用于处理通过 http 请求接收到的所有文本数据。

文档链接: https ://docs.djangoproject.com/en/1.11/ref/request-response/#django.http.QueryDict

这是一个使用示例:

from django.http import QueryDict

def home_view(request):

    if request.method == 'PATCH':
        data = QueryDict(request.body)
        print data['your_field']
于 2017-09-11T13:21:38.670 回答
2

正如@asitm9 提到的,建议使用request.data适用于POST,PUTPATCH

于 2017-01-13T22:02:12.760 回答
1

当 CONTENT_TYPE 为“multipart/form-data;”时尝试使用 MultiPartParser,否则为 QueryDict。

if request.META.get('CONTENT_TYPE', '').startswith('multipart'):
   from django.http.multipartparser import MultiPartParser

   query_dict, multi_value_dict = MultiPartParser(request.META, request, 
                                                  request.upload_handlers).parse()
else:
   from django.http import QueryDict

   query_dict = QueryDict(request.body)
于 2020-09-23T06:30:00.747 回答
0

raw_post_data 成功了(我以前用过,但忘记了它的存在)

于 2014-07-16T04:20:34.607 回答