2013-06-26 3 views
3

У меня есть сеанс на основе файлов cookie, и я попытался сохранить данные между двумя страницами, хранящимися в сеансе, однако данные, хранящиеся в переменной сеанса, сохраняются.Сброс переменной сеанса Django

Примером этого было:

At Home page: 
request.session['foo'] = [] 
request.session['foo'].append('bar') 
print request.session['foo'] will yield ['bar'] 

On second page: 
print request.session['foo'] will yield [] 

Я задавался вопросом, почему это так?

ответ

6

request.session['foo'].append('bar') не влияет на сеанс. Только request.session['...'] = .../del request.session['...'] влияет на сеанс.

Попробуйте ввести код.

request.session['foo'] = ['bar'] 

https://docs.djangoproject.com/en/dev/topics/http/sessions/#when-sessions-are-saved

По умолчанию Django сохраняет только в базу данных сеанса, когда сеанс был изменен - ​​то есть, если какие-либо из его словаря значений было приписано или удалено:

# Session is modified. 
request.session['foo'] = 'bar' 

# Session is modified. 
del request.session['foo'] 

# Session is modified. 
request.session['foo'] = {} 

# Gotcha: Session is NOT modified, because this alters 
# request.session['foo'] instead of request.session. 
request.session['foo']['bar'] = 'baz' 

В последнем случае вышеприведенного примера мы можем прямо указать объекту сеанса , что он был модифицирован IED, установив модифицированный атрибут на объекте сеанса:

request.session.modified = True 

...

+0

Спасибо! Сейчас работает отлично. – WToa

+0

@WToa, приветствую :) – falsetru