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

Posted

技术标签:

【中文标题】如何自动从服务器获取新数据?【英文标题】:How to automatically fetch new data from server? 【发布时间】:2013-12-28 22:33:41 【问题描述】:

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

我想知道如何在不刷新页面的情况下更新此对象列表,以便在创建新对象时自动显示在页面上。

我对 ajax 有一些了解,但是我不确定如何实现这一点。

TIA

【问题讨论】:

@Vland 实际上这在任何 Django 入门教程中都没有涉及,因为他描述的是从服务器到客户端的“推送”数据,而不是 Ajax 的“拉取”……典型的 Django 安装,按照基本的入门指南,不能这样做 @Vland 我都做了,但没有找到太多帮助,这就是我在这里问的原因。非常感谢任何帮助。 【参考方案1】:

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

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

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

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

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

如果你是在 Django 中构建你的第一个 web 应用程序,我建议你避免一开始就尝试推送更新,而只专注于构建应用程序和学习 Django。

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

html5 服务器发送的事件 HTTP“长轮询” Web 套接字

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

一些 Django 助手:https://github.com/niwibe/django-ssehttps://github.com/tbarbugli/django_longpollinghttps://github.com/stephenmcd/django-socketio

【讨论】:

以上是关于如何自动从服务器获取新数据?的主要内容,如果未能解决你的问题,请参考以下文章

不要使用Ember.js从服务器获取新数据

从服务器获取数据并使用 Android 加载新屏幕

如何从 Next.js 中的服务器获取 HOC 中的数据?

从 cron 重新启动弹性 beanstalk 应用程序服务器

Sencha Touch 同步并从服务器获取新数据

如何从两个不同的活动中保存和获取 SQLite 中的数据?