在Django中获取PATCH请求参数

时间:2013-09-26 04:37:42

标签: django http rest http-headers

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

我正在使用Django 1.5.1。

4 个答案:

答案 0 :(得分:1)

您可以手动使用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']

答案 1 :(得分:0)

  

raw_post_data做了这个伎俩(之前我用过,但忘了它存在)

答案 2 :(得分:0)

正如@ asitm9所述,使用request.data适用于POSTPUTPATCH,建议使用。

答案 3 :(得分:0)

当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)