我使用邮递员这样做的请求到我的本地服务器:DRF - 访问请求的POST数据
正如你可以看到它是一个post请求。在我看来(APIView
)我需要访问json数据。但是,当我尝试:
request.POST
# <QueryDict: {}>
或
request.data # ¿?
# AttributeError: 'WSGIRequest' object has no attribute 'data'
的唯一途径,我可以看到发送的数据是,当我访问
request.body
# '{\n "token": "6J3qG4Ji2Jw44eIklKvPYxUgclfGRWHZDKG",\n "city": "Port Orange",\n "state": "FL",\n "formatted_address": "Peach Blossom Blvd 5329",\n "_zip": "32128"\n}'
但这是一个'str'
>>> type(request.body)
<type 'str'>
我试图符合请求dispatch()
方法中的请求数据。我可以这样做:
req = self.initialize_request(request)
这会返回一个rest_framework.request.Request
对象,我可以访问请求数据。但我不能叫
super(FaveoAPIView, self).dispatch(request, *args, **kwargs)
因为我得到:
{
"status_code": 400,
"object": "Malformed request.",
"success": false
}
我can'r明白为什么,我想,当我打电话self.initialize_request()
什么变化。任何想法?
你在这里试图解决的实际问题是什么?在大多数情况下,重写dispatch()方法实际上并不是解决问题的最佳方法。 –
@JoeyWilhelm我不想重写dispatch,我想在普通视图流程之前执行一些代码。但是在我的post(或get)方法执行之前,我需要访问request.data。 – Gocht