检查Django中是否设置了会话密钥

Jul*_*lio 16 python django

我试图在Django中创建一个相对简单的购物车.我将购物车存放在request.session ['cart']中.因此,当添加任何内容时,我将需要访问此会话中的数据.但是,如果尚未设置会话,则无法在未收到错误的情况下访问它.无论如何都要检查会话是否已设置,以便在不存在的情况下进行设置?

Man*_*dan 46

我假设您要检查是否在会话中设置了密钥,而不是设置了会话(不知道后者的含义).如果是这样:

你可以做:

if key not in request.session:
    # Set it.
Run Code Online (Sandbox Code Playgroud)

在你的情况下:

if 'cart' not in request.session:
    # Set it.
Run Code Online (Sandbox Code Playgroud)

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

  • pythonic方式将是`如果key不在request.session中. (3认同)

Ber*_*ant 19

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

cart = request.session.get('cart')
cart = request.session.get('cart', 'no cart')
Run Code Online (Sandbox Code Playgroud)