2013-09-26 142 views
2

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

我正在使用Django 1.5.1。

+2

可能重复(HTTP ://stackoverflow.com/questions/4994789/django-where-are-the-params-stored-on-a-put-delete-request) – falsetru

+1

@falsetru:我不认为这是一个重复的问题(这一个是关于'PATCH' - 人们(像我)在寻找'PATCH'时可能找不到这个链接)。尽管如此,感谢链接 - 'raw_post_data'做了窍门(我之前使用过它,但忘记它存在)。 – orange

+1

我发现上面的问题使用'PATCH','django'作为搜索关键字。 – falsetru

回答

0

raw_post_data的伎俩(我以前使用过,但忘记它的存在)

0

正如@ asitm9提到的,使用request.data作品POSTPUTPATCH和建议。

+0

你在说哪个版本的Django? –

+0

'request.data'不包含任何内容 – Dave

0

您可以手动使用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'] 
[?Django的 - 当存储在一个把PARAMS/DELETE请求]的