19

我正在尝试在 Django 中创建一个相对简单的购物车。我将购物车存放在request.session['cart']. 因此,当向其中添加任何内容时,我需要访问此会话中的数据。但是,如果会话尚未设置,我将无法访问它而不会收到错误消息。有什么方法可以检查是否设置了会话,以便在不存在的情况下进行设置?

4

2 回答 2

51

我假设您想检查是否在会话中设置了密钥,而不是是否设置了会话(不知道后者是什么意思)。如果是这样的话:

你可以做:

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

在你的情况下:

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

编辑:将代码片段更改为使用key not in而不是not key in. 谢谢@katrielalex。

于 2010-10-11T18:02:42.070 回答
19

您可以get在会话字典上使用 - 方法,如果键不存在,它不会抛出错误,但返回 none 作为默认值或您的自定义默认值:

cart = request.session.get('cart')
cart = request.session.get('cart', 'no cart')
于 2010-10-11T18:16:52.337 回答