Django - 在信号中访问会话

问题描述 投票:0回答:1

我的应用程序将数据保存在匿名用户的会话中。当用户创建帐户时,我需要在信号中访问这些数据。我正在考虑在创建用户对象时使用 post_save 信号。问题是,我不知道如何访问信号中的会话。 我想到了三种可能的解决方案:

  1. 使用SessionStore对象(https://docs.djangoproject.com/en/dev/topics/http/sessions/#using-sessions-out-of-views)。问题是,由于我无权访问信号中的会话或 cookie,因此我无法获取会话密钥来检索会话

    signals.py 文件:

    @receiver([post_save], sender=User)
    def get_from_session(sender, instance, created, **kwargs):
    
        s = SessionStore(session_key= ???) # how to access the key?
        data = s.get(‘my_special_session_data’)
        …
    
  2. 修改或包装User对象,使django请求他的属性,该属性可以通过信号传递。但我可能不会为当前项目实现这个解决方案,因为我无权访问 User 对象。

  3. 在视图中处理会话数据,但此解决方案不是最佳方案,因为我们希望自动化该过程。

有什么想法吗?预先感谢。

django session signals
1个回答
0
投票

Django 没有这样做的方法

但是你可以使用这个片段:

http://djangosnippets.org/snippets/2179/

© www.soinside.com 2019 - 2024. All rights reserved.