gpt4 book ai didi

Django - 使用新的消息框架给(离线)用户留言

转载 作者:行者123 更新时间:2023-12-04 03:10:25 26 4
gpt4 key购买 nike

所以message_set不赞成使用新的消息框架。好老message_set允许我给离线用户留言(例如,当我在 cron 工作中做一些事情时,我可能想通知一些用户)。现在看一看新框架,似乎只能在request中添加一条消息。目的。

我是否遗漏了什么,或者是向 user 添加消息的功能对象不见了,这意味着我必须自己动手?

最佳答案

看起来你没有遗漏任何东西。向 user 添加消息的功能对象将在 Django 1.2 中被弃用,并在 1.4 中完全删除(来自 django 身份验证文档 here )。并且没有任何新的消息存储后端是为消息的持久性(例如数据库或文件存储)预先滚动的。

但一切都没有丢失。我在新的消息存储后端代码中没有看到任何内容坚持您在存储消息时提供有效的请求(例如,存储来自 cron 作业的消息会起作用)。如果我是你,我会推出自己的后端,将消息存储在数据库表中。

编辑:你如何实现这个

如果您同意将离线消息存储实现为新消息后端之一的 bolt ,那么一种可能的方法是:

  • 定义消息模型
    class UserMessage(models.Model):
    user = models.ForeignKey('auth.User')
    message = models.CharField(max_length=200)
    created = models.DateTimeField(auto_now_add=True)
  • 从您的 cron 作业手动创建 UserMessages
    def some_func_in_my_cron_job():
    ...
    UserMessage.create(user=some_user, message="Something happened")
    ...
  • 定义一个新的消息存储引擎,覆盖现有引擎之一,并重新定义 _get()
    from django.contrib.messages.storage.session import SessionStorage

    class MyStorageEngine(SessionStorage):
    def _get(self, *args, **kwargs):
    if hasattr(self.request, "user") and self.request.user.is_authenticated():
    offline_messages = UserMessage.objects.filter(user=self.request.user)
    # and delete the messages from the database
    else:
    offline_messages = None

    other_messages = super(MyStorageEngine, self)._get(*args, **kwargs)

    # all_messages = combine offline_messages and other_messages

    return all_messages
  • 在设置中打开你的新消息引擎:
    MESSAGE_STORAGE = 'myproj.custom_message_storage.MyStorageEngine'

  • 使用这种方法,您不会使用新的消息传递 api 写入数据库后端,但您可以使用它读取手动设置的消息。希望这可以帮助。

    关于Django - 使用新的消息框架给(离线)用户留言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1985730/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com