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

Posted

技术标签:

【中文标题】如何在单独的表单页面上存储和访问存储在会话对象中的值【英文标题】:How to store and access values stored in a Session Object on separate form pages 【发布时间】:2015-01-22 14:31:06 【问题描述】:

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

我认为会话对象的想法是存储一个变量以便以后可以访问它?在下面的一段代码中,第一个打印语句按预期工作,打印“这是自我请求 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】:

尝试使用键来存储值:

request.session['fav_color'] = 'red' #Set the value
fav_color = request.session.get('fav_color', 'red') #Read the value else read a default one

来自Django Doc:来自 django.core.signing 的 JSON 序列化程序的包装器。只能序列化基本数据类型。

此外,由于 JSON 仅支持字符串键,请注意在 request.session 中使用非字符串键将无法正常工作

【讨论】:

以上是关于如何在单独的表单页面上存储和访问存储在会话对象中的值的主要内容,如果未能解决你的问题,请参考以下文章

在 Rails 的会话中存储对象

使用 cookie/会话存储用户名、密码 - Java Servlets [关闭]

如何在会话存储中使用相同的键更新数组

如何使用存储在会话存储中的访问令牌使用 HttpClient 进行 Web api 调用?

如何使用 django 动态访问会话中的值?

在 Grails 中,如何访问域类静态方法中的休眠会话?