如何使用沼泽龙在 django 中实现用户特定的实时通知



我一直在尝试在项目中实现用户特定的实时通知。虽然我能够广播实时通知,但我面临着创建用户特定频道的艰难挣扎,其中选定的通知将发送给用户。就我所做的尝试而言,以下是我在查看了使用swampdragon-auth的几个示例后编写的代码片段:

routers.py:

class NotificationRouter(ModelPubRouter):
valid_verbs = ['subscribe']
route_name = 'notifications'
model = Notification
serializer_class = NotificationSerializer
def get_query_set(self, **kwargs):
    return self.model.objects.filter(user=self.connection.user)
def get_object(self, **kwargs):
    return self.model.objects.get(user=self.connection.user, pk=kwargs['pk'])
def get_subscription_contexts(self, **kwargs):
    return {'user__id': self.connection.user.pk}

models.py

class Notification(SelfPublishModel, models.Model):
serializer_class = NotificationSerializer
message = models.TextField()
verb = models.CharField(null=True, default="achieved", max_length=20)
user = models.ForeignKey(settings.AUTH_USER_MODEL)

serializer.py

class NotificationSerializer(ModelSerializer):
    class Meta:
        model = 'notifications.Notification'
        publish_fields = ['message','verb','user']

此代码不实现用户特定的通知执行,而是向所有用户广播消息。据我所知,get_subscription_contexts是过滤对选定用户的通知的功能,但我无法使用此代码实现这一点。如果有人能帮助我解决这个问题,那就太好了。

谢谢

希曼舒

在示例项目中测试您的代码并添加两个用户,我只收到有关我的登录用户的通知,如预期的那样。

你能确认你正在使用的沼泽龙版本吗?

测试:

  • 姜戈==1.7
  • 沼泽龙==0.4.2
  • 沼泽龙身份验证==0.1.3

我已经创建了一个演示项目,实现了上述内容 - https://github.com/CptLemming/swampdragon_notification_example

在这个例子中,我可以登录到 Django 管理员,创建一个通知,并让通知只显示所选用户。

希望对您有所帮助。

相关内容

  • 没有找到相关文章

最新更新