如果这个问题没有意义,请原谅我;我最近睡得很少。
我想在通过django的消息模块发出信号时向用户发送通知,但我不知道如何将请求对象传递给messages.success方法。
我这样做是因为每当用户获得徽章时我都需要告诉他。例如,当用户完成她的个人资料时,进行一定数量的评级,或者使一定数量的评论得到奖励。现在,用户告诉她有新徽章的唯一方法是转到徽章页面,但我想轻轻地告知用户该事件。
使用django通知会起作用,但是我们已经实现的系统会过于刺激(目前它会加载一个模态)并且因为它击中了数据库而更加昂贵。
提前致谢。
答案 0 :(得分:7)
Django消息框架针对HTTP请求而不是用户进行操作(因此它也适用于匿名用户)。信号不知道将消息附加到哪个请求,并且当前可能甚至不会登录有问题的用户。
听起来你想做的事情会更适合像django-notification,http://github.com/jtauber/django-notification/这样的事情。
答案 1 :(得分:2)
您无法直接在信号中使用消息框架,因为您无权访问请求。
你可以通过包装一个用户可能经常去查看新徽章并创建消息的视图来解决这个问题。然后,虽然他们不会在收到徽章后查看的下一页上收到消息,但是他们会在创建消息的页面之后的第一页上看到它。