首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django Rest框架:空request.data

Django Rest框架:空request.data
EN

Stack Overflow用户
提问于 2015-06-05 16:50:06
回答 3查看 20.4K关注 0票数 17

对于DRF视图,我有以下代码:

代码语言:javascript
复制
from rest_framework import viewsets

class MyViewSet(viewsets.ViewSet):

    def update(self, request, pk = None):
        print pk
        print request.data

我通过python请求以以下方式调用URL:

代码语言:javascript
复制
import requests
payload = {"foo":"bar"}
headers = {'Content-type': 'application/json'}
r = requests.put("https://.../myPk", data= payload, headers=headers)

但是当从服务器接收到请求时,request.data是空的。这是输出:

代码语言:javascript
复制
myPk
<QueryDict: {}>

我怎样才能解决这个问题?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-05 18:09:05

您需要将payload作为序列化的json对象发送。

代码语言:javascript
复制
import json
import requests
payload = {"foo":"bar"}
headers = {'Content-type': 'application/json'}
r = requests.put("https://.../myPk/", data=json.dumps(payload), headers=headers)

否则,DRF实际上会抱怨:

代码语言:javascript
复制
*** ParseError: JSON parse error - No JSON object could be decoded

您可以通过调试视图(例如使用pdbipdb)或打印如下变量来看到该错误消息:

代码语言:javascript
复制
def update(self, request, pk = None):
    print pk
    print str(request.data)
票数 15
EN

Stack Overflow用户

发布于 2016-03-31 19:05:04

在此核对2期:-

  1. Json格式是否正确。
  2. Url是否正确(我在我的url中漏掉了后面的反斜杠,因为我正面临这个问题)

希望它能帮上忙

票数 5
EN

Stack Overflow用户

发布于 2015-06-06 16:48:39

假设您使用的是一个新版本的请求,您需要这样做:

代码语言:javascript
复制
import requests

payload = {"foo":"bar"}
r = requests.put("https://.../myPk", json=payload, headers=headers)

然后,它将为您正确地格式化有效负载并提供适当的标头。否则,您将发送DRF无法正确解析的application/x-www-urlformencoded数据,因为您告诉它您正在发送JSON。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30671808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档