2010-10-11 13 views
13

Próbuję utworzyć stosunkowo prosty koszyk w Django. Przechowuję wózek w request.session ['cart']. Dlatego będę musiał uzyskać dostęp do danych w tej sesji, gdy coś zostanie do niej dodane. Jeśli jednak sesja nie jest jeszcze ustawiona, nie mogę uzyskać do niej dostępu bez otrzymania błędu. Czy mimo to można sprawdzić, czy sesja jest ustawiona, aby można ją było ustawić, jeśli nie istnieje?Sprawdź, czy klucz sesji jest ustawiony w Django

Odpowiedz

35

Zakładam, że chcesz sprawdzić, czy klucz jest ustawiony w sesji, a nie jeśli sesja jest ustawiony (nie wiem co druga oznacza). Jeśli tak, to:

można zrobić:

if key not in request.session: 
    # Set it. 

W twoim przypadku:

if 'cart' not in request.session: 
    # Set it. 

EDIT: zmieniony fragment kodu do korzystania key not in zamiast not key in. Dzięki @katrielalex.

+3

The Pythoniczny sposób byłby "jeśli klucz nie jest w request.session". – katrielalex

11

Można użyć get -method na słowniku sesji, nie wygeneruje błąd, jeśli klucz nie istnieje, ale nikt powrócić jako wartość domyślną lub swojej domyślnej wartości niestandardowe:

cart = request.session.get('cart') 
cart = request.session.get('cart', 'no cart') 
Powiązane problemy