2014-11-24 2 views
0

Я начинаю узнавать о объектах сеанса, и я столкнулся с проблемой, которая, я уверен, очень проста.Как сохранить и получить доступ к значениям, хранящимся в объекте сеанса, на отдельных страницах формы

Я думал, что идея объекта сеанса состояла в том, чтобы хранить переменную, чтобы к ней можно было получить доступ позже? В ниже утихла кусок кода первый оператор печати работает, как ожидалось печати «Это само запрос 2», но второй причины этой ошибки:

Exception Type: KeyError

Exception Value: 0 Exception Location: /Library/Python/2.7/site-packages/django/contrib/sessions/backends/base.py in getitem, line 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: Оболочка вокруг сериализации JSON r из django.core.signing. Может только сериализовать основные типы данных.

Кроме того, как JSON поддерживает только строковые ключи, обратите внимание, что при использовании не-строковые ключи в request.session не будет работать, как ожидалось