Skip to main content
 首页 » 编程设计

python之json解析django rest框架

2025年05月04日50mate10pro

我想在 django views.py 文件中解析传入的 POST 数据

POST 数据:

{ 
"number" : "17386372", 
"data" : ["banana","apple","grapes" ]   
} 

下面是我尝试使用 request

读取上述传入数据的方式

View .py

class Fruits(APIView): 
 
def post(self, request, format=None): 
 
   if request.method == "POST": 
 
        number = request.data.get('number') 
        fruits_data = json.loads(request.body) 
 
        if number not in [None, '', ' ']: 
            try: 
 
                response = {"return": "OK","data":fruits_data['data']} 
                return Response(response) 
            except: 
                return Response({"return": "NOT OK"}) 
        else: 
            return Response({"return": "NOT OK"}) 
 
    else: 
        return Response({"return": "NOT OK"}) 

错误:

You cannot access body after reading from request's data stream 

请您参考如下方法:

Django json 解析器已经为您做了这些:

from rest_framework import parsers 
 
class Fruits(APIView): 
    parser_classes = (parsers.JSONParser,) 
 
    def post(self, request, format=None): 
        number = request.data['number'] 
        fruits = request.data['data'] 

如果您的 http 请求的 Content-Type 已经正确设置为 application/json,您甚至不需要指定解析器。