如何配置向Django频道发送json对象?

问题描述 投票:0回答:1

如何配置向Django频道发送json对象?为了确保在管理面板中添加新对象时,它会立即实时显示在前面。也许有人有任何例子。会非常感激的。

有一个Factory对象:

models.朋友

class Factory(models.Model):

     OBJECT_CHOICES = (
            ('Завод', 'Завод'),
            ('Вышка', 'Вышка'),
            ('Хранилище', 'Хранилище'),
            ('АЗС', 'АЗС')
        )

    title = models.CharField(max_length=200)
    choice = models.CharField(max_length=15, choices=OBJECT_CHOICES, default = '')
    address = YmapCoord(max_length=200, start_query=u'Россия', size_width=500, size_height=500, unique = True)

当向/ getFactory /发出GET请求时,将发出JSON类型

[
   {
    "title": "factory",
    "choice": "Завод",
    "address": [
        55.744607932133505,
        48.99357300960071
    ]
   }
]
python django django-channels
1个回答
1
投票

首先,你需要一个consumer,你应该在那里定义groups字段。

WebsocketConsumer的频道将自动添加到(在连接时)并从(在断开连接时)删除其名称出现在使用者的组类属性中的任何组。

然后你的前端应该以某种方式连接到消费者并监听更新。完成后,您可以从项目的任何位置发送新消息。例如,来自post_save信号。

from channels import Group
from django.db.models import signals
from django.dispatch import receiver


@receiver(signals.post_save, sender=Factory)
def notify_group(sender, instance, **kwargs):
    if kwargs['created']:
        group_name = 'your group'
        Group(group_name).send({'text': 'message or object'})
© www.soinside.com 2019 - 2024. All rights reserved.