【问题标题】: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 

【问题讨论】:

    标签: python django python-2.7 django-forms


    【解决方案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 中使用非字符串键将无法正常工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-04
      • 1970-01-01
      • 2020-06-04
      • 2017-06-12
      • 1970-01-01
      相关资源
      最近更新 更多