为什么我得到一个错误“类型为'HttpResponseRedirect'的对象没有len()”?

时间:2014-01-21 07:01:37

标签: django django-generic-views

在我的Django应用程序中,我有一个继承ListView的基于类的视图。 get_queryset方法以这种方式覆盖:

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'的对象没有len()”。我看不出原因?

提前致谢。

1 个答案:

答案 0 :(得分:3)

get_queryset()方法应该返回一个查询集(就像你在第二个return语句中那样)而不是一个HttpResponseRedirect

您可以抛出404异常(HttpResponseRedirect)或返回带有raise Http404的空查询集,而不是返回return CoopRoom.objects.none()