2012-03-20 12 views
12

Tengo dos vistas.¿Cómo elimino una clave de sesión en Django después de usarla una vez?

view1 pasa un mensaje de error a view2 a través de una clave de sesión.

¿Cómo elimino la clave después de que se muestre view2? Solo lo necesito por una vez: redirecciona de view1 a view2. No necesito que aparezca ese mensaje después de actualizar mi página web. No creo que Python continúe ejecutándose una vez que llegue a return

Estaba pensando en establecer un sello de tiempo de expiración pero necesito asegurarme de que existe al menos 10-20 segundos, si la aplicación realmente dura tanto tiempo cargar (hacemos algunas cosas de servidor con Django)? Entonces el tiempo no es tan prometedor.

Gracias.

Respuesta

41

Puede eliminar la clave de la sesión como cualquier otro diccionario.

del request.session['your key'] 

Es posible que deba marcar la sesión como modificada para que se guarde, dependiendo de algunos de sus ajustes.

request.session.modified = True 
+2

Lo sentimos. Hice todo tan complicado. Solo lo guardo en var local, y listo. Solo elimínalo. Gracias. Estoy pensando demasiado. – CppLearner

+1

Si 'del' la clave que está directamente asociada con la sesión, y no anidada como' request.session ['parent_key'] ['child'] ', entonces no es necesario establecer' request.session.modified = True ' –

8

También podría hacer estallar la clave de la sesión. Puede establecer la clave para una variable y deshacerse de ella al mismo tiempo:

key_variable = request.session.pop('your key') 
+0

Que también puede tener un valor predeterminado, como' obtener' – Vassilis

+0

¿Esto requiere 'request.session.modified = True' posteriormente, o no? –

+0

@HassanBaig No, no es necesario establecer 'request.session.modified = True' en este caso. –

Cuestiones relacionadas