我是一个新手,我正在 django 中制作一个网络应用程序,其中我有一个显示任务对象列表的页面。
我想知道如何在不刷新页面的情况下更新此对象列表,以便在创建新对象时它会自动显示在页面上。
我对ajax有一些了解,但我不知道如何实现这一点。
TIA
最佳答案
您正在描述从服务器到客户端(网络浏览器)的数据“推送”
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
关于django - 如何自动从服务器获取新数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20820115/