对于DRF视图,我有以下代码:
from rest_framework import viewsets
class MyViewSet(viewsets.ViewSet):
def update(self, request, pk = None):
print pk
print request.data我通过python请求以以下方式调用URL:
import requests
payload = {"foo":"bar"}
headers = {'Content-type': 'application/json'}
r = requests.put("https://.../myPk", data= payload, headers=headers)但是当从服务器接收到请求时,request.data是空的。这是输出:
myPk
<QueryDict: {}>我怎样才能解决这个问题?
发布于 2015-06-05 18:09:05
您需要将payload作为序列化的json对象发送。
import json
import requests
payload = {"foo":"bar"}
headers = {'Content-type': 'application/json'}
r = requests.put("https://.../myPk/", data=json.dumps(payload), headers=headers)否则,DRF实际上会抱怨:
*** ParseError: JSON parse error - No JSON object could be decoded您可以通过调试视图(例如使用pdb或ipdb)或打印如下变量来看到该错误消息:
def update(self, request, pk = None):
print pk
print str(request.data)发布于 2016-03-31 19:05:04
在此核对2期:-
希望它能帮上忙
发布于 2015-06-06 16:48:39
假设您使用的是一个新版本的请求,您需要这样做:
import requests
payload = {"foo":"bar"}
r = requests.put("https://.../myPk", json=payload, headers=headers)然后,它将为您正确地格式化有效负载并提供适当的标头。否则,您将发送DRF无法正确解析的application/x-www-urlformencoded数据,因为您告诉它您正在发送JSON。
https://stackoverflow.com/questions/30671808
复制相似问题