gpt4 book ai didi

python - 为什么 Django 中的 IndexError at/list 索引超出范围

转载 作者:太空宇宙 更新时间:2023-11-03 20:40:24 24 4
gpt4 key购买 nike

我不知道为什么会出现这样的代码,我是Python初学者,原始代码在 https://github.com/yo-alan/horarios

IndexError at /
list index out of range
Request Method: GET
Request URL: http://127.0.0.1:8000/
Django Version: 1.11.22
Exception Type: IndexError
Exception Value:
list index out of range
Exception Location: /Users/oscarfrancisco/PycharmProjects/ProyectosGithub/horarios-master/calendario/views.py in index, line 76
Python Executable: /Users/oscarfrancisco/PycharmProjects/ProyectosGithub/bin/python
Python Version: 2.7.10
Python Path:
['/Users/oscarfrancisco/PycharmProjects/ProyectosGithub/horarios-master',
'/Users/oscarfrancisco/PycharmProjects/ProyectosGithub/lib/python27.zip',
'/Users/oscarfrancisco/PycharmProjects/ProyectosGithub/lib/python2.7',
'/Users/oscarfrancisco/PycharmProjects/ProyectosGithub/lib/python2.7/plat-darwin',
'/Users/oscarfrancisco/PycharmProjects/ProyectosGithub/lib/python2.7/plat-mac',
'/Users/oscarfrancisco/PycharmProjects/ProyectosGithub/lib/python2.7/plat-mac/lib-scriptpackages',
'/Users/oscarfrancisco/PycharmProjects/ProyectosGithub/lib/python2.7/lib-tk',
'/Users/oscarfrancisco/PycharmProjects/ProyectosGithub/lib/python2.7/lib-old',
'/Users/oscarfrancisco/PycharmProjects/ProyectosGithub/lib/python2.7/lib-dynload',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
'/Users/oscarfrancisco/PycharmProjects/ProyectosGithub/lib/python2.7/site-packages']
Server time: Jue, 4 Jul 2019 20:02:39 -0300

这是我的代码:

def index(request):

if not request.user.is_authenticated():
return render(request, 'calendario/index.html')

if str(list(request.user.groups.all())[0]) == 'Profesionales':

persona = request.user.usuario.persona

especialidades = Especialidad.objects.filter(estado='ON', profesional=persona)\
.order_by('nombre')
espacios = Espacio.objects.filter(~Q(estado=Espacio.OFF))
calendarios = Calendario.objects.all()

context = { "espacios": espacios, "especialidades": especialidades,
"calendarios": calendarios}

else:

institucion = request.user.usuario.instituciones.all()[0]

especialidades = Especialidad.objects.filter(estado='ON', institucion=institucion)\
.order_by('nombre')
espacios = Espacio.objects.filter(~Q(estado=Espacio.OFF), institucion=institucion)

calendarios = Calendario.objects.all()

for calendario in calendarios[:]:
if institucion != calendario.espacio.institucion:
calendarios.remove(calendario)

profesionales = Profesional.objects.filter(estado="ON")

for profesional in profesionales[:]:

usuario = Usuario.objects.get(persona=profesional)

if institucion not in usuario.instituciones.all():
profesionales.remove(profesional)

context = { "espacios": espacios, "especialidades": especialidades,
"profesionales": profesionales, "calendarios": calendarios}

#~ try:
#~ usuario = Usuario.objects.get(user=request.user)
#~ except:
#~ usuario = request.user

return render(request, 'calendario/home.html', context)

最佳答案

Line 76是下面这个:

if str(list(request.user.groups.all())[0]) == 'Profesionales':

这意味着用户没有任何关联的组 - .all() 的结果是一个空列表,并且其中没有第一个(索引 0)元素。

将该行更改为以下两行:

groups = request.user.groups.all()
if len(groups) > 0 and str(groups[0]) == 'Profesionales':

关于python - 为什么 Django 中的 IndexError at/list 索引超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56895069/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com