如果密钥不存在,则在会话中设置默认值

时间:2017-02-07 00:40:02

标签: django session

我想从会话中获取一个值,如果该值不存在,我想提供一个默认值。我从here获得了当前的方法。这就是我正在做的事情

fav_color = request.session.get('fav_color', 'red')

以上工作正常但是我注意到如果键变量放在settings.py中,那么输出是None。我想修复它。例如,这是在我的settings.py

VARIABLE_PATIENT_ID_DEFINE="patientID"

现在在其他应用程序中,我正在使用它

    t = "somevar"
    s = settings.VARIABLE_PATIENT_ID_DEFINE
    print(s) # prints patientID
    fav_color = request.session.get(s, 'red') --->After this line Default is None
    fav_color = request.session.get(t, 'red') --->After this line Default is red

我的问题是为什么

fav_color = request.session.get(s, 'red')

失败并且没有返回?为什么从settings.VARIABLE_PATIENT_ID_DEFINE分配导致问题

1 个答案:

答案 0 :(得分:1)

如果request.session已包含{"patientID": None} 然后执行request.session.get("patientID", "red")也会返回None,因为这是patientID键的值。

如果会话中根本不存在密钥,那么你只会获得"red"

您可以通过编写

来解决您的问题

fav_color = request.session.get(s, 'red') or 'red'