我正在尝试优化和减少我的一些代码,并且通常更好地理解它,因为这是我的第一个开发项目。
以下工作正常,但可以简化吗?
self.request.session['path_one_images'] = PATH_ONE_IMAGES
self.request.session['images'] = images
self.request.session['slider_DV_values'] = slider_DV_values
self.request.session['instruction_task_one_images'] = INSTRUCTION_TASK_ONE_IMAGES
self.request.session['instruction_task_two_images'] = INSTRUCTION_TASK_TWO_IMAGES
我尝试使用dict将单独的请求组合在一起但得到错误:
异常值:不可用类型:'list'
self.request.session({['path_one_images'] : PATH_ONE_IMAGES,
['images'] : images,
['slider_DV_values'] : slider_DV_values,
['instruction_task_one_images'] : INSTRUCTION_TASK_ONE_IMAGES,
['instruction_task_two_images'] : INSTRUCTION_TASK_TWO_IMAGES,})
答案 0 :(得分:2)
request.session
基本上是一个Python映射,就像字典一样,它支持所有字典方法。与dict.update()
类似,可以设置多个键值对:
self.request.session.update({
'path_one_images': PATH_ONE_IMAGES,
'images': images,
'slider_DV_values': slider_DV_values,
'instruction_task_one_images': INSTRUCTION_TASK_ONE_IMAGES,
'instruction_task_two_images': INSTRUCTION_TASK_TWO_IMAGES
})
请注意,键是不是列表;您对此处的object[...]
订阅语法感到困惑。
答案 1 :(得分:1)
你知道这是dict的错误语法,是吗?
{['path_one_images'] : PATH_ONE_IMAGES}
......应该是
{'path_one_images': PATH_ONE_IMAGES, etc}
https://docs.python.org/2/library/stdtypes.html#dict
这解释了您收到的错误("不可用的类型:' list'")... Python认为您正在尝试使用列表{ {1}}作为dict键。 Dict键不必是字符串,但它们必须是 hashable 。在这种情况下,您只想使用字符串['path_one_images']
。
然后另外,正如@Martijn Pieters指出的那样,会话本身是不可调用的,你应该使用'path_one_images'
方法,例如:
update