2014-01-21 2 views
1

내 장고 응용 프로그램에서 ListView를 상속하는 클래스 기반보기가 있습니다. get_queryset 방법은이 방법을 오버라이드 (override)되어" 'HttpResponseRedirect'유형의 객체에 len()이 없습니다."라는 오류가 발생하는 이유는 무엇입니까?

def get_queryset(self): 
     if not 'anonymous_nickname' in self.request.session: 
      return HttpResponseRedirect('/') 
     filters = {} 
     if self.request.user.is_anonymous(): 
      filters['allow_anonymous_access'] = True 
     return CoopRoom.objects.filter(**filters) 

그는 메인 페이지에 데이터를 입력하지 않고 그들을 도달하고자 할 때 사용자가 객실의 목록을 볼 수 있도록하지 않기 위해. 하지만 그 대신이 리디렉션을 수행하는 :

  return HttpResponseRedirect('/') 

내가 오류 얻을 "유형의 개체를 'HttpResponseRedirect를') (더 렌이 없습니다." 그 이유를 알 수가 없어?

미리 감사드립니다.

답변

3

get_queryset() 방법은 검색어 세트를 반환 (당신이 두 번째 return 성명에서처럼)과 하지HttpResponseRedirect한다!

HttpResponseRedirect을 반환하는 대신 404 예외 (raise Http404)를 던지거나 return CoopRoom.objects.none()과 함께 빈 쿼리 세트를 반환 할 수 있습니다.