gpt4 book ai didi

python - django session 检查是否存在

转载 作者:行者123 更新时间:2023-11-28 21:24:53 24 4
gpt4 key购买 nike

我正在尝试检查 session 中是否包含任何内容。我所做的是:

if request.session: 
# do something

但它不起作用。有什么方法可以知道 session 在那一刻是否包含某些内容?

如果我执行 request.session['some_name'],它会起作用,但在某些情况下,我只需要知道 session 是否为空。

询问一些具体的名字并不总是一件好事。例如。如果没有 session ,它会返回一个错误,因为 some_name 不存在。

最佳答案

request.sessionSessionBase 对象的实例,它的行为类似于字典,但它不是字典。这个对象有一个名为 _session 的“私有(private)”字段(实际上它是一个属性),它是一个包含所有数据的字典。

原因是 Django 在您调用 request.session[key] 之前不会加载 session 。它是延迟实例化的。

所以你可以尝试这样做:

if request.session._session:
# do something

或者您可以通过查看这样的键来完成:

if request.session.keys():
# do something

注意 .keys() 是如何工作的:

django/contrib/sessions/backends/base.py

class SessionBase(object):
# some code

def keys(self):
return self._session.keys()

# some code

我总是建议直接阅读源代码。

关于python - django session 检查是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15333041/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com