检查django中是否设置了会话变量

时间:2012-05-08 05:04:34

标签: python django session

我需要检查会话是否已设置...我从stackoverflow中遵循了一些解决方案,但仍然存在问题

if request.session.get('orderId',None):
    request.session['orderId']=ts
    orderId=request.session['orderId']
else:
    orderId=request.session['orderId']

在orderId上的keyError正好在其他地方:

2 个答案:

答案 0 :(得分:2)

你的条件被颠倒了。尝试颠倒,如:

if not request.session.get('orderId', None):
    request.session['orderId'] = ts
    orderId = request.session['orderId']
else:
    orderId = request.session['orderId']

.get('orderId', None)将返回None和。{ if not request.session.get('orderId', None)将引导您填充会话,这可能是您想要的。

更好的方法可以

orderId = request.session.setdefault('orderId', ts)
如果存在,这将从会话中为您提供orderId,否则它将使用ts填充会话并返回给您。

答案 1 :(得分:1)

get方法的整个想法是保持代码清洁。这应该有效:

orderId = request.session.get('orderId',ts)

编辑:

抱歉,我错过了这个:

orderId = request.session.get('orderId',ts)
request.session['orderId']=ts

不需要if和else ......