来自Django的JsonResponse没有将提到的键值对发送到Reactjs

问题描述 投票:1回答:1

我正在尝试使用react从Django API获取响应,但是我传递的键值对在响应中不可见。

反应获取代码

handleClick(i) {
        .
        .
        .
        if (i != '=') {
         .
         .
        }
        else {
            // CODE TO FETCH FROM DJANGO API
            fetch('http://127.0.0.1:8000/solve/', {
                method: 'POST',
                body: {"expression":this.state.content}
            }).then((response)=>{ console.log(response)})
        }

}

Python代码

# Create your views here.
@api_view(["POST"])
def solveExpression(expression_json):
    try:
        math_expr = expression_json.data["expression"]
        result = eval(math_expr)
        data = {"result":result} #This is the data I want to send to reactjs
        return JsonResponse(data)
    except Exception as e:
        return JsonResponse("Error:" + str(e), safe = False)

但是很遗憾,我得到的答复中没有关键的“结果”。

enter image description here

请纠正我在哪里犯错,因为我是Reactjs的新手。

json django reactjs python-3.7 react-fullstack
1个回答
1
投票

[fetch默认返回与它进行的与AJAX调用相关的所有元数据。

您的实际响应将作为body出现在ReadableStream属性中:

尝试通过在响应上调用.json()来获取身体。

此外,fetch需要字符串化的body作为请求有效负载。因此,您还必须通过请求JSON.stringify]来调用body

这里,尝试一下:

handleClick(i) {
  ...
  if (i != '=') {
    ...
  } else {
    // CODE TO FETCH FROM DJANGO API
    fetch('http://127.0.0.1:8000/solve/', {
      method: 'POST',
      body: JSON.stringify({
        "expression": this.state.content
      })
    })
    .then((response) => response.json())
    .then(finalResponse => console.log(finalResponse))
  }

}
© www.soinside.com 2019 - 2024. All rights reserved.