Remember Remember

lunes, 28 de abril de 2008

Problemas con la session en Django

Django no parece guardar la session?

En mi caso yo estaba creando algo asi como

session["app1"] = {}
session["app1"].update({"llave":"valor"})


y no parecia funcionar.

Luego de mucho pelear, encontré esto en la documentacion de django.

El punto clave es que la session se guarda cuando se modifica, pero no cuando se modifican elementos dentro de la session.

Mejor explicado:

# 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'

In the last case of the above example, we can tell the session object explicitly that it has been modified by setting the modified attribute on the session object:

request.session.modified = True

To change this default behavior, set the SESSION_SAVE_EVERY_REQUEST setting to True. If SESSION_SAVE_EVERY_REQUEST is True, Django will save the session to the database on every single request.



tomado del link de arriba.