2016-11-06 4 views
0

나는 장고 views.py 파일에 POST 들어오는 데이터 구문 분석 할JSON 구문 분석 장고는 나머지 프레임 워크

POST 데이터 :

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

내가 request

로 들어오는 데이터 위에 읽으려고하는 방법이다

views.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 
+1

옵션 1 : 첫 번째는'''json.loads'''을 누른 후''' 'number''''의 압축을 풉니 다. 옵션 2 :'''복사 수입 deepcopy'''과'''my_copy = deepcopy (요청)'''난파하기 전에 원래의 객체. – Art

답변

2

request.data 및 request.body 원시 HTTP 요청을 판독하고, 포맷 데이터를 구성하는 두 개의 메커니즘, 즉 파이썬 환경에서 사용하기에 적합하다. 여기서 문제는 두 가지를 동시에 사용하고 있다는 것입니다. 따라서, HTTP 연결의 inputstream의 이미 request.data 호출에 의해, 읽습니다. 이제 request.body 또한 이제 모든 데이터를 포함하지 않는 동일한 스트림에 액세스하려고합니다. 따라서 오류가 발생합니다. 당신을 위해

, 나는 다음과 같은 코드가 작동 생각 :

fruits_data = json.loads(request.body) 
number = fruits_data["number"] 
+0

감사합니다. – Naroju