【问题标题】:JsonResponse from Django not sending the mentioned key value pair to Reactjs来自 Django 的 JsonResponse 没有将提到的键值对发送到 Reactjs
【发布时间】:2020-04-15 23:23:02
【问题描述】:

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

React 获取代码

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)

但不幸的是,我得到的回复中没有关键的“结果”。

请纠正我犯的错误,因为我对 reactjs 很陌生。

【问题讨论】:

    标签: json django reactjs python-3.7 react-fullstack


    【解决方案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))
      }
    
    }
    

    【讨论】:

    • 当我尝试上面显示的代码时,[错误:请求中不支持媒体类型“text/plain;charset=UTF-8”]
    • @StarRider,我已经更新了我的答案。您还必须将JSON.stringify 调用到分配给请求的body 的对象。这样做应该可以解决您遇到的这个错误。
    猜你喜欢
    • 2021-12-31
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    • 2019-12-05
    • 1970-01-01
    • 2017-03-07
    相关资源
    最近更新 更多