gpt4 book ai didi

python - Django Rest Framework .DATA 属性仅返回数组的第一项

转载 作者:行者123 更新时间:2023-11-28 21:50:47 25 4
gpt4 key购买 nike

我有一个 API 端点,客户端可以在其中发布一个 JSON 对象(一次邀请几个用户加入一个项目)。

我的测试是这样的:

def test_new_style(self):
note = 'this is a note'
payload = {
'invites': [
{
'email': 'test2@getmixim.com',
'note': note
},
{
'email': 'notauser@getmixim.com',
'note': note
}
]
}

# self.u1_client is a rest_framework.test.APIClient object
response = self.u1_client.post('/api/projects/1/invite', payload)

我有一个 APIView,如下所示:

class InviteMember(APIView):
permission_classes = (IsAuthenticated,)

def post(self, request, project_pk):
import pdb; pdb.set_trace()

我降落在 shell 中,并执行以下操作:

(Pdb) request
<rest_framework.request.Request object at 0x106bb4910>
(Pdb) request.DATA
<QueryDict: {u'invites': [u"{'note': 'this is a note', 'email': 'test2@getmixim.com'}", u"{'note': 'this is a note', 'email': 'notauser@getmixim.com'}"]}>
(Pdb) request.DATA['invites']
u"{'note': 'this is a note', 'email': 'notauser@getmixim.com'}"

很奇怪吧?我怎样才能得到邀请词典的数组?为什么 DATA 属性不只是给我对象?


Django: v1.7.4
Django 休息框架:v2.4.4

最佳答案

我找到了解决方案!问题是我的请求是作为查询字符串发送的。

将我的测试更改为...

response = self.u1_client.post('/api/projects/1/invite', payload, format='json')

...解决问题。

实际上,DRF APIClient 将各个字典编码为 JSON,然后将它们嵌入到查询字符串中。

关于python - Django Rest Framework .DATA 属性仅返回数组的第一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31432279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com