Django的。我如何更新所有会话?

时间:2016-01-19 21:41:01

标签: django

我创建简单的学习应用:其中包含Status模型和Tasks模型的列,例如trello.com。

当我将任务拖放到其他状态列时,我使用Ajax调用将页面更新为单个用户。问题是,我如何更新所有会话的元素?

我需要一些外部的东西,或者我只能在django上做这件事吗?

很抱歉,如果我的问题过于宽泛,我不会要求为我编写代码,我只是在寻求建议。

1 个答案:

答案 0 :(得分:2)

假设您使用的是标准的Django Session模型:

from django.contrib.sessions.models import Session

all_sessions = Session.objects.all()
all_current_sessions = Session.objects.filter(expire_date__lte=timezone.now())

# What fields are available in sessions? 
print(Session._meta.fields)
# Standard would be - (<django.db.models.fields.CharField: session_key>, <django.db.models.fields.TextField: session_data>, <django.db.models.fields.DateTimeField: expire_date>

for session in all_sessions:
    session_data = session.get_decoded()
    print(session_data)

要写入session_data,您需要重新编码session_data。有关该信息,请参阅此great post

编辑:要添加到此内容,请参阅this answer,其中显示了如何使用SessionStore重新编码会话数据。

来自链接的答案 -

from django.contrib.sessions.backends.db import SessionStore

# look up our sessions in session store
for session_key in logged_in:
    s = SessionStore(session_key=session_key)
    s['test'] = True
    s.save()
    s.modified
    # True