[英]Why IndexError at / list index out of range in Django
我不知道為什么會發生此代碼,我是Python Begginer,原始代碼在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)
第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':
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.