2014-09-15 4 views
1

가져 오기가 필요하다는 것을 알고 있지만 어디에서 가져 오겠습니까?글로벌 이름 'get_serializer_class'가 정의되지 않았습니다.

from rest_framework import get_serializer_class 

위의 코드는 작동하지 않으며 함수를 가져 오는 위치를 설명하는 곳에서는 어디에도 문서가 표시되지 않습니다.

class CalendarDetailView(generics.RetrieveUpdateDestroyAPIView): 
    def get_serializer_class(self): 
     if self.request.method == 'GET': 
      serializer_class = CalendarGETSerializer 
     elif self.request.method == 'PUT': 
      serializer_class = CalendarPUTSerializer 
     return serializer_class 

    def get(self, request, format=None): 
     evntname = self.request.GET.get('name') 
     queryset = Evntmst.objects.filter(evntmst_name=evntname) 
     serializer = get_serializer_class(queryset) 
     if queryset: 
      return Response(serializer.data) 
     else: 
      raise Http404 

    def put(self, request, format=None): 
     serializer = get_serializer_class(data=request.DATA) 
     if serializer.is_valid(): 
      serializer.save() 
      return Response(serializer.data, status=status.HTTP_201_CREATED) 
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 

편집 - - 참고로

이 오류를주고 내보기 여기에 역 추적이

Traceback: 
File "D:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response 
    112.      response = wrapped_callback(request, *callback_args, **callback_kwargs) 
File "D:\Python27\lib\site-packages\django\views\generic\base.py" in view 
    69.    return self.dispatch(request, *args, **kwargs) 
File "D:\Python27\lib\site-packages\django\views\decorators\csrf.py" in wrapped_view 
    57.   return view_func(*args, **kwargs) 
File "D:\Python27\lib\site-packages\rest_framework\views.py" in dispatch 
    400.    response = self.handle_exception(exc) 
File "D:\Python27\lib\site-packages\rest_framework\views.py" in dispatch 
    397.    response = handler(request, *args, **kwargs) 
File "D:\Tidal\API\views.py" in get 
    398.   serializer = get_serializer_class(queryset) 

Exception Type: NameError at /deploy/calendartest/ 
Exception Value: global name 'get_serializer_class' is not defined 
+0

클래스 메소드이므로'self.get_serializer_class'가 아니어야합니까 ?? – karthikr

답변

3

나는 오류가 여기서 더 잘 이해하기 위해 스택 트레이스를 볼 필요 것 하지만 나는 실제로 당신이 아무것도 가져올 필요가 없다고 믿습니다. 문서의이 비트에서

는 : http://www.django-rest-framework.org/api-guide/generic-views#get_serializer_classself

당신이 당신이 당신의 API로 정의 클래스의 메소드를 오버라이드 (override) 할 필요가 보일 것입니다. 조금 더 명확 역 추적을 본 후 :

귀하의 API 클래스는 내가 한 눈에

편집에서 볼 수있는 것과 잘 보이는

당신은해야 현재 get_serializer_class(queryset)

self.get_serializer_class()(queryset)

+0

thnx. 나는 Traceback을 포함시켰다. – whoisearth

+0

@whoisearth 업데이트 답변 : –

+0

감사합니다 @ Anthony-Sottile 그 일을했습니다! – whoisearth

관련 문제