最近,我一直在研究将Web套接字集成到Django中。根据文档,使用频道是要走的路。
给定一个说明性模型查询
class Request(models.Model):
id = models.IntegerField(name="id", primary_key=True)
query = models.CharField(name = 'query', max_length=1024)
我想将我的 Web 应用程序连接到 Web 套接字服务器。当 Web 套接字服务器收到消息时,它应将该消息广播到客户端建立的套接字连接的特定子集。
客户端(即 Web 浏览器)一旦收到广播消息,就应该将其附加到 Request.objects。从那里开始,所有查询的列表应该使用 Django 模板自动更新,并在其中定义模型 - 而不是强迫用户显式刷新它。
因此,我的问题是:(I)使用通道(如果这是在Django中处理Web套接字连接的首选方式),如何将新到达的Query对象附加到Query.objects中 - 而不将对象存储到数据库中,因为它在发送到Web套接字服务器之前已经插入,(II)刷新相应Django模板的内容。
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);
}