Проверьте, установлен ли ключ сеанса в Django - PullRequest
15 голосов
/ 11 октября 2010

Я пытаюсь создать относительно простую корзину для покупок в Джанго. Я храню корзину в request.session ['cart']. Поэтому мне нужно будет получить доступ к данным в этом сеансе, когда что-то будет добавлено к нему. Однако, если сеанс еще не установлен, я не могу получить к нему доступ, не получив сообщение об ошибке. Есть ли способ проверить, установлен ли сеанс, чтобы его можно было установить, если он не существует?

Ответы [ 2 ]

46 голосов
/ 11 октября 2010

Я предполагаю, что вы хотите проверить, установлена ​​ли в сеансе клавиша , а не в том, установлена ​​ли сессия (не знаю, что означает последняя). Если так:

Вы можете сделать:

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

В вашем случае:

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

РЕДАКТИРОВАТЬ : изменил фрагмент кода, чтобы использовать key not in вместо not key in. Спасибо @ katrielalex.

18 голосов
/ 11 октября 2010

Вы можете использовать get -метод в словаре сеанса, он не выдаст ошибку, если ключ не существует, но не вернет ничего в качестве значения по умолчанию или вашего пользовательского значения по умолчанию:

cart = request.session.get('cart')
cart = request.session.get('cart', 'no cart')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...