Django未发送正确的JSON响应

时间:2019-10-06 00:07:10

标签: json django http

我已经建立了一个简单的项目,并且在发出发布请求时,预期将根据用户输入的值返回响应。

我正在用邮递员测试我的api逻辑。

此刻,无论我输入什么值,都将返回相同的json响应。这不是预期的逻辑。

views.py:

def function(request):
    if request.method == 'POST':
        if request.POST.get("number") == 1:
            print("Number is 1")
            return JsonResponse({'message':'Number is 1'})
        else:
            print("Number is not 1")
            return JsonResponse({'message':'Number is not 1'})

即使number的值等于1,也会返回消息:Number不为1。

邮递员请求:

{
    "number": 1
}

谢谢。

1 个答案:

答案 0 :(得分:1)

来自docs

  

如果您需要访问请求中发布的原始或非格式数据,请通过HttpRequest.body属性访问。

由于您要发送的数据是“非格式”数据,因此您需要使用request.body

import json

def function(request):
    if request.method == 'POST':
        data = json.loads(request.body)
        if data.get("number", 0) == 1:
            print("Number is 1")
            return JsonResponse({'message':'Number is 1'})
        else:
            print("Number is not 1")
            return JsonResponse({'message':'Number is not 1'})