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

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

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

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

TIA

【问题讨论】:

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

标签: django jquery


【解决方案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/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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-09
    • 1970-01-01
    • 2019-01-26
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    相关资源
    最近更新 更多