Django Channel web sockets - 将消息附加到 Model.objects
Posted
技术标签:
【中文标题】Django Channel web sockets - 将消息附加到 Model.objects【英文标题】:Django Channel web sockets - append message to Model.objects 【发布时间】:2016-07-15 17:24:46 【问题描述】:最近,我一直在研究将 Web 套接字集成到 Django 中。根据文档,使用Channels 是可行的方法。
给定一个说明性模型查询
class Request(models.Model):
id = models.IntegerField(name="id", primary_key=True)
query = models.CharField(name = 'query', max_length=1024)
我想让我的 Web 应用程序连接到 Web 套接字服务器。当 Web 套接字服务器接收到消息时,它应该将该消息广播到客户端建立的特定套接字连接子集。
客户端(即网页浏览器),一旦收到广播的消息,它应该将它附加到Request.objects。从那里开始,所有查询的列表应该使用 Django 模板自动更新,并在其中定义模型 - 无需强制用户显式刷新它。
因此,我的问题是:(我)使用 Channels(如果这是在 Django 中处理 Web 套接字连接的首选方式),我如何将新到达的 Query 对象附加到 Query.objects - 不将对象存储到数据库中,因为它在发送到 Web 套接字服务器之前已经插入,(II) 刷新相应 Django 模板的内容。
【问题讨论】:
【参考方案1】:Django-Channels 是将 Django 后端连接到 Django 前端的新方法。
您的第二个问题我不完全理解,但在消费者函数中,您可以导入模型并更新数据库
# consumers.py
def hello(message):
obj = Request.objects..
obj.save()
message.reply_channel.send(
"text": message.content['text'],
)
最后你可以使用 jquery 更新模板...
<p></p>
socket.onmessage = function(e)
$('p').html(e.data);
【讨论】:
以上是关于Django Channel web sockets - 将消息附加到 Model.objects的主要内容,如果未能解决你的问题,请参考以下文章