是否可以在 Django 中检索 HTTP PATCH 请求的请求参数?request.method == 'PATCH'
被识别,但我很难检索请求有效负载。我试过request.REQUEST.items()
了,但这不包含任何数据。我知道我可以使用 Django-tastypie,但在这种情况下,我想避免使用它(而且我认为tastypie 无论如何都在使用一些 Django 方法来检索这些数据)。
我正在使用 Django 1.5.1。
是否可以在 Django 中检索 HTTP PATCH 请求的请求参数?request.method == 'PATCH'
被识别,但我很难检索请求有效负载。我试过request.REQUEST.items()
了,但这不包含任何数据。我知道我可以使用 Django-tastypie,但在这种情况下,我想避免使用它(而且我认为tastypie 无论如何都在使用一些 Django 方法来检索这些数据)。
我正在使用 Django 1.5.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']
正如@asitm9 提到的,建议使用request.data
适用于POST
,PUT
和PATCH
。
当 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)
raw_post_data 成功了(我以前用过,但忘记了它的存在)