如何在单独的表单页面上存储和访问存储在会话对象中的值

时间:2014-11-24 19:06:36

标签: python django python-2.7 django-forms

我开始了解会话对象,我遇到了一个问题,我确信这个问题非常简单。

我认为会话对象的想法是存储一个变量,以便以后可以访问它?在下面减少的代码段中,第一个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 

1 个答案:

答案 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中使用非字符串键将无法按预期工作