我开始了解会话对象,我遇到了一个问题,我确信这个问题非常简单。
我认为会话对象的想法是存储一个变量,以便以后可以访问它?在下面减少的代码段中,第一个print语句按预期打印“这是自我请求2”但第二个会导致此错误:
异常类型:KeyError
异常值:0 例外位置:/ Library /Python/2.7/site-packages/django/contrib/sessions/backends/base.py 在 getitem ,第47行
为什么第二个打印声明不起作用?为什么我不能在表单的第二步访问self.request.session[0]
?
非常感谢任何帮助/提示
由于
代码
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']:
step = int(self.steps.current)
if step in (5, 6, 7):
self.request.session[0] = 2
print 'This is self request', self.request.session[0]
elif step == 8:
print 'This is STILL self request', self.request.session[0]
return context
答案 0 :(得分:1)
尝试使用键来存储值:
request.session['fav_color'] = 'red' #Set the value
fav_color = request.session.get('fav_color', 'red') #Read the value else read a default one
From Django Doc:来自django.core.signing的JSON序列化程序的包装器。只能序列化基本数据类型。
此外,由于JSON 仅支持字符串键,请注意在request.session中使用非字符串键将无法按预期工作