在 Django 1.3 及之前的版本中,您可以使用以下方式向特定用户发送消息:
user.message_set.create(message='some message text')
从 Django 1.4 开始,此功能已被删除,以支持消息传递框架。消息传递框架使用以下语法:
info(request, 'some message text')
我想知道是否可以像旧方法允许的那样为特定用户排队消息,而不是只为 request.user 中的用户排队?因此,在一个 View 中,我希望能够执行以下操作:
susy = User.objects.get(username='susy')
# send a message to susy even though request.user is john
info(susy, 'some message text')
请您参考如下方法:
消息的默认存储引擎现在是用户 cookie,这意味着您不能为当前用户以外的任何人存储消息。要解决此问题,您可以尝试使用 session 后端,获取所需用户的 session 并直接在其中写入消息 - 只需检查后端本身如何在其源代码中实现它并使用相同的方法。
显然,如果您的 session 也是基于 cookie 的,这将不起作用。
如果解决方案需要可靠且不依赖于应用配置,您将需要创建基于数据库的自定义解决方案来处理消息。例如,您可以为 messages 框架实现自己的基于数据库的存储引擎。
