2014-09-15 2 views
0

get_serializer_class()를 사용하려고하는데 오류 메시지가 나타납니다. 여기에 내 생각이다 -GET 및 PUT을위한 django 다른 serializer - SyntaxError : invalid syntax

class CalendarDetail(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 

그리고 여기 내 urls.py의 - 내가 '

class CalendarDetail(RetrieveUpdateDestroyAPIView): 
     ^
SyntaxError: invalid syntax 
[14/Sep/2014 20:08:16] "GET /deploy/calendartest/?name=cal_daily HTTP/1.1" 500 5 
9 

- 나는 다음과 같은 오류 메시지가 URL을 공격하려고하자마자

url(r'^deploy/calendartest/$', CalendarDetail.as_view(), name='CalendarDetail'), 

그것은 올바르게 클래스의 내부 뭔가를 추측하고 문법 오류가 반드시 사실일까요? 내가 얻지 못하는 것은 다른 모든 클래스가 작동하도록 클래스를 설계했기 때문에 하나의 serializer로 200을 500으로 반환하는 간단한 get을 수행하는 별도의 뷰가 있습니다.

+2

이 경우에, 문제는 위의 줄에 :

클래스 CalendarDetail (RetrieveUpdateDestroyAPIView) - 여기 내보기입니다. 클래스 정의 바로 위에 어떤 것이 보이지 않습니까? – Michael0x2a

+0

아니요 클래스 줄'## TEST CLASS VIEW' 앞에 주석 줄이 있습니다. – whoisearth

+0

죄송합니다. 주석/공백 줄/해석기가 무시할 코드의 첫 줄을 의미했습니다. – Michael0x2a

답변

0

몇 가지 문제가있었습니다. 하나는 이전보기에서 부주의로 내가 게시 된보기로 이전 줄에 bracked 닫힙니다 제거했습니다.

두 번째로, get_serializer_class는 인스턴스를 올바르게 호출해야합니다 (쿼리 세트).

get_serializer_class()를 사용하려고하는데 오류 메시지가 나타납니다. 당신이 구문 오류를 얻을 때

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 
관련 문제