python - django 设置 session 变量直到一天结束

标签 python django session cookies session-variables

我需要设置一个在每天结束时过期的 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/

相关文章:

python - 在 MLPClassification Python 中实现 K 折交叉验证

python - 如何将两个等长列表转换为表示有序对的嵌套列表列表?

jquery - 双倍的 POST 请求而不是单一的

python - 在 Django admin 中显示子级内联

python - 在哪里初始化 Django session 变量?

php - 将 PHP 变量从 html 传递到 php 和电子邮件模板

python - 如何在 Pandas 0.24.2 中将 offsets.MonthEnd 系列转换为 int

python - 即使我获得了所有标签, Selenium 也从下拉菜单中选择选项

python - Django:CreateView 和 UpdateView 中具有唯一约束的不同行为

session - 粘性 session : Good or Bad?