我正在使用django v2.2.4
,需要访问请求正文数据。
这是我的代码:
@api_view(['POST'])
@renderer_classes((JSONRenderer,))
def index(request):
if request.method == 'POST':
results= []
data = JSONParser().parse(request)
serializer = ScrapeSerializer(data=data)
if serializer.is_valid():
url = request.data.url
#url = request.POST.get('url')
但我收到此错误:
RawPostDataException at /scrape/
You cannot access body after reading from request's data stream
这是请求正文:
{
"url": "xyz.com"
}
如何访问请求正文?
答案 0 :(得分:0)
我找到了与此问题相关的这篇SO帖子,Exception: You cannot access body after reading from request's data stream
在DRF中始终使用request.data
代替 request.body
@api_view(['POST'])
@renderer_classes((JSONRenderer,))
def index(request):
if request.method == 'POST':
results = []
serializer = ScrapeSerializer(data=request.data)
if serializer.is_valid():
url = request.data["url"]
request.data
返回请求正文的解析内容,它将是 dict类对象 ,因此 点操作(request.data.url
) 在这里不起作用。
答案 1 :(得分:0)
要访问POST请求的请求正文,可以通过url = request.POST.get("url")