【发布时间】:2015-12-04 04:32:39
【问题描述】:
我希望能够收集匿名用户和登录用户使用网络应用程序的基本统计数据。
这里的共同点是使用会话 ID,我可以为登录和注销的用户存储数据,并且仍然能够将存储的统计信息链接到给定的会话(会话属于谁并不重要) .
但是,我在收集 session_key 时遇到了问题,因为匿名用户进入网站时似乎没有设置它(可能是因为 Django 会话是 only saved when modified。
当我使用登录用户测试视图时:
def create(request, *args, **kwargs):
print request.session.session_key
对于已登录的用户,将打印 session_key。对于已注销的用户或匿名用户,这是None。在第一次向站点请求时,会话不存在,因此视图不可用。
我目前的计划是创建一个自定义中间件作为官方会话中间件的子类,但覆盖process_request() 以通过session.save() 为没有会话的人实例化会话。
我对这种方法的唯一担心是我不确定它是否会对 Django 的其他部分产生无法预料的后果 - 人们有什么建议吗?
【问题讨论】:
-
我会创建一个新的中间件来实现这一点,对我来说,它似乎更健壮,并且未来不太可能中断。
标签: django session django-sessions