我需要设置一个在每天结束时过期的 session 变量。
我知道我可以像这样设置 session 变量:
request.session['my_variable'] = 'foo'
我怎样才能让它在一天结束时过期?
最佳答案
在大多数情况下,您不希望整个 session 过期。所以有一种方法只让一个变量过期——将变量与过期时间一起保存在字典中。
def set_expirable_var(session, var_name, value, expire_at):
session[var_name] = {'value': value, 'expire_at': expire_at.timestamp()}
使用此函数设置变量:
expire_at = datetime.datetime.combine(datetime.date.today(), datetime.datetime.max.time())
set_expirable_var(request.session, expire_at)
在获取值之前,您应该检查变量是否未过期。
def get_expirable_var(session, var_name, default=None):
var = default
if var_name in session:
my_variable_dict = session.get(var_name, {})
if my_variable_dict.get('expire_at', 0) > datetime.datetime.now().timestamp():
myvar = my_variable_dict.get('value')
else:
del session[var_name]
return var
关于python - django 设置 session 变量直到一天结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25432614/