从请求正文django访问数据

时间:2019-08-28 09:26:54

标签: python django django-rest-framework

我正在使用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"
}

如何访问请求正文?

2 个答案:

答案 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")