2013-10-14 67 views
0

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

  1. 使用SessionStore对象(https://docs.djangoproject.com/en/dev/topics/http/sessions/#using-sessions-out-of-views)。问题是,因为我没有访问会话或信号的饼干,我不能得到会话密钥来检索会话

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. 在视图中处理会话数据,但是这个解决方案并不理想,因为我们想自动化这个过程。

有没有想过?提前致谢。

回答

0

Django不的方式做到这一点

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

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

+0

感谢布莱恩!这确实提供了用户,这可能非常有用,但在这种特定情况下,我也需要会话。 – Raphael

+0

@Raphael只有你必须在每种情况下将'用户'更改为'会话' – Goin

+0

好的,谢谢Goin! – Raphael