flo*_*urr 13 python django python-requests django-rest-framework
我有以下代码来查看DRF:
from rest_framework import viewsets
class MyViewSet(viewsets.ViewSet):
def update(self, request, pk = None):
print pk
print request.data
Run Code Online (Sandbox Code Playgroud)
我通过以下方式通过python-requests调用URL :
import requests
payload = {"foo":"bar"}
headers = {'Content-type': 'application/json'}
r = requests.put("https://.../myPk", data= payload, headers=headers)
Run Code Online (Sandbox Code Playgroud)
但是当从服务器收到请求时,request.data为空.这里有输出:
myPk
<QueryDict: {}>
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
sth*_*hzg 13
您需要将其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)
Run Code Online (Sandbox Code Playgroud)
否则会发生什么事情,DRF实际上会抱怨:
*** ParseError: JSON parse error - No JSON object could be decoded
Run Code Online (Sandbox Code Playgroud)
你会通过调试视图(例如使用pdb或ipdb)或打印变量来看到错误消息:
def update(self, request, pk = None):
print pk
print str(request.data)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10970 次 |
| 最近记录: |