【问题标题】:Why do I get an error "object of type 'HttpResponseRedirect' has no len()"?为什么我会收到错误“'HttpResponseRedirect' 类型的对象没有 len()”?
【发布时间】:2014-01-21 07:01:37
【问题描述】:

在我的 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()”。我看不出原因?

提前致谢。

【问题讨论】:

    标签: django django-generic-views


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2019-12-28
      • 2012-08-02
      • 2015-10-08
      • 1970-01-01
      • 1970-01-01
      • 2021-08-03
      • 1970-01-01
      • 2018-10-01
      相关资源
      最近更新 更多