Django – 在PUT / DELETE请求上存储的参数在哪里?

我想按照我的新Django项目的RESTful模式,我想知道PUT / DELETE请求时,参数是在哪里。

据我所知,我只在请求中看到GET&POST QueryDict,没有其​​他人。 是Django添加一个新的PUT或DELETE QueryDict有关的请求,或者它将参数添加到GET或POST QueryDict?

谢谢你的帮助。

我假设你问的是如果你有一个这样的方法:

def restaction(request, id): if request.method == "PUT": someparam = request.PUT["somekey"] 

答案是否定的,你不能。 Django不为PUT,OPTIONS和DELETE请求构build这样的字典, 这里解释了推理。

为了总结它,REST的概念是,交换的数据可能比简单的键值映射更复杂。 例如,PUTting一个图像,或使用json。 一个框架无法知道你想要发送数据的多种方式,所以它显而易见 – 让我们来处理这个问题。 在给出相同响应的情况下,也可以看到这个问题的答案。

现在,你在哪里find数据? 那么根据文档 ,django 1.2的functionrequest.raw_post_data 。 作为一个头, 它看起来像django 1.3将支持 request.read()即文件式的语义。

我正在使用django v1.5。 而我主要使用QueryDict来解决这个问题:

 from django.http import QueryDict put = QueryDict(request.body) description = put.get('description') 

并在*。咖啡

 $.ajax url: "/policy/#{policyId}/description/" type: "PUT" data: description: value success: (data) -> alert data.body fail: (data) -> alert "fail" 

你可以去这里find更多的信息。 我希望这可以帮助你。 祝你好运:)

Ninefiger的答案是正确的。 但是,有一些解决方法。

如果您正在为Django项目编写REST风格的API,我强烈build议您使用tastypie 。 你将节省大量的时间,并保证你的API更结构化的forms。 你也可以看看它是如何做到的(访问PUT和DELETE数据)。

你可以在django-piston的代码中看到一个为PUT方法获取QueryDict的例子(参见coerce_put_post方法)