的下面的Django视图不断引发错误异常值:列表分配索引超出范围
异常值:全局名称“图像”没有定义
views.py
PATH_ONE_IMAGES = ['P1D1.jpg', 'P2D2.jpg', 'P3D3.jpg', 'P4D4.jpg', 'P5D5.jpg', 'P6D6.jpg', 'P7D7.jpg', 'P8D8.jpg', 'P9D9.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']:
print '\nThe available list of Path_One images is', PATH_ONE_IMAGES
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]
elif step in (9, 10, 11):
images[3 + step - 9] = image = random.choice(PATH_ONE_IMAGES)
PATH_ONE_IMAGES.remove(image)
context['display_image'] = image
elif step == 12:
context['fourth_image'] = images[3]
context['fifth_image'] = images[4]
context['sixth_image'] = images[5]
elif step in (13, 14, 15):
images[6 + step - 13] = image = random.choice(PATH_ONE_IMAGES)
PATH_ONE_IMAGES.remove(image)
context['display_image'] = image
else:# self.steps.current == '16':
context['fourth_image'] = images[6]
context['fifth_image'] = images[7]
context['sixth_image'] = images[8]
steps = ['5','6','7','9','10','11','13','14','15']
context.update({'steps': steps})
return context
当我使用
来定义'图像'时 ....
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 = [0,1,2,3,4]
他们变得硬编码并没有考虑的价值的PATH_ONE_IMAGES
任何人都可以看到我在这里做错了什么?如何定义图像数组,使其列表分配索引不超出范围,因此可以更新?
嗨Bakuriu。我添加了模式代码,以便您可以看到我想要实现的目标。 – Deepend 2014-10-06 17:32:09
@Deepend是的,从现在发布的代码中可以清楚地看出问题是我在回答中描述的。你有'图像= []',之后'用于步骤(5,6,7):images [step-5] = something'这意味着循环尝试执行'images [0] = something',正如我所说,由于'图像'是空的,会引发错误。但是我并没有真正明白你想要达到什么目的。你的代码试图在某个时候使用'images [8]',但'images'在那段代码中不会有8个元素。 – Bakuriu 2014-10-06 20:34:51
我做了一个非常糟糕的工作解释这一点。基本上,用户在每个页面上看到随机选择的不同图像。在三页这样的页面之后,用户意图再次看到前三张图像。 (数据验证页面)发生三次,或三个三个组。 – Deepend 2014-10-06 20:38:30