我想从会话中获取一个值,如果该值不存在,我想提供一个默认值。我从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
分配导致问题
答案 0 :(得分:1)
如果request.session
已包含{"patientID": None}
然后执行request.session.get("patientID", "red")
也会返回None
,因为这是patientID
键的值。
如果会话中根本不存在密钥,那么你只会获得"red"
。
您可以通过编写
来解决您的问题 fav_color = request.session.get(s, 'red') or 'red'