Django - 信号中的访问会话

时间:2013-10-14 09:58:11

标签: django session signals

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

  1. 使用SessionStore对象(https://docs.djangoproject.com/en/dev/topics/http/sessions/#using-sessions-out-of-views)。问题是,由于我无法访问会话或信号中的cookie,我无法获取会话密钥来检索会话
  2. 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’)
        …
    
    1. 修改或包装User对象,使django请求成为他的属性,可以随信号传递。但是我可能没有为当前项目实现此解决方案,因为我无法访问User对象。

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

    3. 有什么想法?提前致谢。

1 个答案:

答案 0 :(得分:0)

Django无法做到这一点

但您可以使用此代码段:

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