2014-04-27 16 views
5

Khi tôi làm lệnh sau trên thiết bị đầu cuối sử dụng curlDjango-Rest-Khung AssertionError HttpResponse Dự kiến ​​

curl -X POST http://myuser:[email protected]:8000/call/make-call/ -d "tutor=1&billed=1" 

tôi nhận được lỗi sau

AssertionError tại/cuộc gọi/make-cuộc gọi/Đợi Response, HttpResponse hoặc HttpStreamingResponse để được trả lại từ giao diện , nhưng không nhận được một <type 'NoneType'>

views.py tôi là

@api_view(['GET', 'POST']) 
def startCall(request): 

    if request.method == 'POST': 

     serializer = startCallSerializer(data=request.DATA) 

     if serializer.is_valid(): 

      serializer.save() 

      return Response(serializer.data, status=status.HTTP_201_CREATED) 

     else: 

      return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 

serializer.py của tôi là

class startCallSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = call 
     fields = ('tutor', 'billed', 'rate', 'opentok_sessionid') 

urls.py của tôi là

urlpatterns = patterns(
    'api.views', 
    url(r'^call/make-call/$','startCall', name='startCall'), 
) 
+2

Bạn nên sử dụng một trình gỡ lỗi như pdb để bước qua mã của bạn, xem các dòng điều khiển và xem những gì đang được trả về bởi các quan điểm. – rubayeet

Trả lời

5

Chức năng không trả lại một phản ứng nếu thử nghiệm request.method == 'POST' Thất bại. (Tức là trên một yêu cầu GET)

@api_view(['GET', 'POST']) 
def startCall(request): 

    if request.method == 'POST': 
     serializer = startCallSerializer(data=request.DATA) 

     if serializer.is_valid(): 
      serializer.save() 
      return Response(serializer.data, status=status.HTTP_201_CREATED) 
     else: 
      return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 
    #Return this if request method is not POST 
    return Response({'key': 'value'}, status=status.HTTP_200_OK) 
0

Chỉ cần thêm

#Return this if request method is not POST 
    return Response(json.dumps({'key': 'value'},default=json_util.default)) 

nếu bạn không có một mã lỗi được xây dựng trong việc phát triển ứng dụng của bạn.

mã đầy đủ của tôi:

@csrf_exempt 
@api_view(['GET','POST']) 
def uploadFiletotheYoutubeVideo(request): 
    if request.method == 'POST': 
     file_obj = request.FILES['file']#this is how Django accepts the files uploaded. 
     print('The name of the file received is ') 
     print(file_obj.name) 
     posteddata = request.data 
     print("the posted data is ") 
     print(posteddata) 
     response = {"uploadFiletotheYoutubeVideo" : "uploadFiletotheYoutubeVideo"} 
     return Response(json.dumps(response, default=json_util.default)) 
    #Return this if request method is not POST 
    return Response(json.dumps({'key': 'value'},default=json_util.default))