2012-03-20 14 views
12

Mam dwa widoki.Jak usunąć klucz sesji w Django po jego użyciu raz?

view1 przekazuje komunikat o błędzie, aby wyświetlić2 za pomocą klucza sesji.

Jak usunąć klucz po renderowaniu view2? Potrzebuję go tylko raz: przekierowanie z widoku1 do widoku2. Nie potrzebuję tej wiadomości, aby pojawiła się po odświeżeniu mojej strony. Nie sądzę, Python będzie nadal wykonywać po osiągnięciu return

Zastanawiam się nad ustawieniem znacznika czasu wygaśnięcia, ale muszę zapewnić, że istnieje przez co najmniej 10-20 sekund, jeśli aplikacja naprawdę robi tak długo, aby ładowanie (robimy coś na serwerze z Django)? Czas nie jest obiecujący.

Dzięki.

Odpowiedz

41

Możesz usunąć klucz z sesji jak każdy inny słownik.

del request.session['your key'] 

może trzeba zaznaczyć sesję jako zmodyfikowane przez to zaoszczędzić w zależności od niektórych ustawieniach.

request.session.modified = True 
+2

Niestety. Sprawiłem, że wszystko było tak skomplikowane. Po prostu zapiszę go w lokalnym var, i gotowe. Po prostu go skasuj. Dzięki. Myślę za dużo. – CppLearner

+1

Jeśli "usuniesz" klucz, który jest bezpośrednio powiązany z sesją, i nie zagnieżdżony jak 'request.session ['parent_key'] ['child']', to nie jest wymagane, aby ustawić 'request.session.modified = True ' –

8

Można również nacisnąć klawisz z sesji. Można ustawić klucz do zmiennej i pozbyć się go w tym samym czasie:

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

Który może również przyjąć wartość domyślną, np.' Get' – Vassilis

+0

Czy to wymaga 'request.session.modified = True' później, czy nie? –

+0

@HassanBaig Nie jest wymagane ustawienie "request.session.modified = True" w tym przypadku. –