我试图将random.choice(PATH_ONE_IMAGES)
的输出分配给列表,然后将其从PATH_ONE_IMAGES
中删除,以使其不能再被选中。这意味着通过Djangos SesionWizardView的一部分get_context_data
方法将其与其他变量一起返回给用户。Python/Django:将值分配给列表
我不觉得什么,我尝试是很难,但我已经遇到了一些问题。
views.py
PATH_ONE_IMAGES = ['P1D1.jpg', 'P2D2.jpg', 'P3D3.jpg', 'P4D4.jpg']
class SurveyWizardOne(SessionWizardView):
def get_context_data(self, form, **kwargs):
context = super(SurveyWizardOne, self).get_context_data(form, **kwargs)
if self.steps.current in ['5','6','7','8','9','10','11','12','13','14','15','16']:
images = []
step = int(self.steps.current)
if step in (5, 6, 7):
images[step - 5] = image = random.choice(PATH_ONE_IMAGES)
PATH_ONE_IMAGES.remove(image)
context['display_image'] = image
elif step == 8:
context['first_image'] = images[0]
context['second_image'] = images[1]
context['third_image'] = images[2]
steps = ['5','6','7','9','10','11','13','14','15']
context.update({'steps': steps})
return context
可以在上面看到,当用户获取到步骤5的列表中的图像,在位置0(5-5)被称为图像和取的值random.choice(PATH_ONE_IMAGES)
。然后将其从原始列表中删除,并且显示给用户的display_image获取图像的值。然后,当用户到达第8步时,他们再次显示全部三个图像。我希望这解释了我想要做的事情。
我所有的isses的似乎是与线
images[step - 5] = image = random.choice(PATH_ONE_IMAGES)
在上面的版本我得到的错误
Exception Value: list assignment index out of range
基于其他的问题,我已经试过
images.append[step - 5] = image = random.choice(PATH_ONE_IMAGES)
images.insert[step - 5] = image = random.choice(PATH_ONE_IMAGES)
但两者给我的错误
异常值:“builtin_function_or_method”对象不支持 项目分配
有谁知道我做错了吗?
更新 ------------------------------------------- --------------------
if step in (5, 6, 7):
image = random.choice(PATH_ONE_IMAGES)
images.insert(step - 5, image)
#===============================================================
# image = random.choice(PATH_ONE_IMAGES)
# images.append(image)
#===============================================================
PATH_ONE_IMAGES.remove(image)
context['display_image'] = image
elif step == 8:
context['first_image'] = images[0]
context['second_image'] = images[1]
context['third_image'] = images[2]
无论是使用插入件或在context['first_image'] = images[0]
异常值附加在相同的错误的结果:表索引超出范围
错误消息告诉你到底是什么问题 - 这应该是'images.append(OBJ)'或'images.insert(指数,OBJ) ' - 注意括号,而不是方括号。 – jonrsharpe 2014-10-06 19:01:14