【问题标题】:IndexError: list index out of range, DjangoIndexError:列表索引超出范围,Django
【发布时间】:2017-10-22 06:25:13
【问题描述】:
def homepage(request):
    if request.user.is_authenticated():
        # get authenticated rfuser
        rfuser = RFUser.objects.filter(user=request.user)[0]
        print rfuser
        # show info of current user
        project_list = rfuser.project_set.all().order_by('project_name')
#       project_list = RFUser.objects.filter(user=request.user).order_by('project_name')
        context_dict = {'projects': project_list}
        return render(request, 'homepage.html', context_dict)
    else:
        return render(request, 'homepage.html')

我得到以下错误:

Internal Server Error: /
Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\django\core\handlers\exception.py", line 39, in inner
    response = get_response(request)
  File "C:\Python27\lib\site-packages\django\core\handlers\base.py", line 249, in _legacy_get_response
    response = self._get_response(request)
  File "C:\Python27\lib\site-packages\django\core\handlers\base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Python27\lib\site-packages\django\core\handlers\base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "E:\rfui_web\myaccoutsite\views.py", line 13, in homepage
    rfuser = RFUser.objects.filter(user=request.user)[0]
  File "C:\Python27\lib\site-packages\django\db\models\query.py", line 295, in __getitem__
    return list(qs)[0]
IndexError: list index out of range

list index out of range 但是找不到原因,不知道是不是索引不是数组的相关值所致

【问题讨论】:

  • 我认为 RFUser.objects.filter(user=request.user) 返回一个空查询集
  • 按照提示后提供的方式:'QuerySet'对象没有属性'project_set'

标签: django


【解决方案1】:

这是因为您的查询返回一个空查询集。从而返回 IndexError: list index out of range .如果您想知道查询是否返回某些内容,请先检查使用:

if RFUser.objects.filter(user=request.user).exists():
     // then do things which you need

【讨论】:

  • 对不起,我不太明白你的意思
  • RFUser.objects.filter(user=request.user) 实际上返回一个空查询集。当您尝试访问空查询集的第一个元素时,您会收到索引错误,因为它不存在。因此,为了确保它确实存在,您使用上面的代码检查它。这有意义吗?
猜你喜欢
  • 2012-01-25
  • 1970-01-01
  • 2011-10-31
  • 2015-06-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多