如何自动从服务器获取新数据?

时间:2013-12-28 22:33:41

标签: django jquery

我是新手,我正在django制作一个网络应用程序,在其中我有一个显示任务对象列表的页面。

我想知道如何在不刷新页面的情况下更新此对象列表,这样如果创建了新对象,它将自动显示在页面上。

我对ajax有一些了解但是,我不知道如何实现这个目标。

TIA

1 个答案:

答案 0 :(得分:7)

您正在描述从服务器到客户端(网络浏览器)的“推送”数据

Django主要用于响应请求,即客户端要求从服务器“提取”一些数据。

您可以按照常见教程通过Ajax进行拉取。

您可以采用“轮询”方法通过Ajax模拟“推送”,客户端会定期向服务器请求更新,即使用setInterval重复进行Ajax调用。

要使用Django进行真正的推动,你将不得不探索除Ajax之外的其他技术,Django将需要一些帮助/黑客来使用它们,必须在非常具体的Web服务器平台上运行等。

如果您要在Django中构建第一个Web应用程序,我建议您首先避免尝试进行推送更新,只需专注于构建应用程序并学习Django。

但是要回答这个问题,推送数据的选项是:

  • HTML5服务器发送的事件
  • HTTP“长轮询”
  • 网络套接字

有关在Django中使用这些问题的更多信息,请参阅这些问题:
How to build a push system in django?
WebSockets vs. Server-Sent events/EventSource
Does Django have a way to open a HTTP long poll connection?

Django的一些助手:
https://github.com/niwibe/django-sse
https://github.com/tbarbugli/django_longpolling
https://github.com/stephenmcd/django-socketio