【问题标题】:Django - access session in signalDjango - 在信号中访问会话
【发布时间】:2013-10-14 09:58:10
【问题描述】:

我的应用程序将数据保存在匿名用户的会话中。当用户创建他的帐户时,我需要在信号中访问这些数据。我正在考虑在创建用户对象时使用 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’)
    …
  1. 修改或包装 User 对象,使 django 请求他的一个属性,该属性可以与信号一起传递。但我可能不会为当前项目实施此解决方案,因为我无权访问 User 对象。

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

有什么想法吗?提前致谢。

【问题讨论】:

    标签: django session signals


    【解决方案1】:

    Django 没有办法做到这一点

    但是你可以使用这个 sn-p:

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

    【讨论】:

    • 谢谢Goin!这确实为用户提供了,这可能非常有用,但在这种特定情况下,我还需要会话。
    • @Raphael 只有在每种情况下您都必须将“用户”更改为“会话”
    猜你喜欢
    • 1970-01-01
    • 2015-04-16
    • 2020-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多