ssc*_*ssc 2 javascript python django ajax
正如在描述如何在不重新加载页面更新Django的页面?,我使用JavaScript从浏览器定期向服务器发送XMLHTTPRequests,以获取在我的应用程序过程中发生变化的那些网页.
但是,大多数时候,没有任何变化; 服务器回复相同的响应,浏览器使用已经存在的内容更新网页.
显然,服务器应该只在有新数据时回复.
http://ajaxpatterns.org/Periodic_Refresh#Lace进行了彻底的网络研究,但是dcoumentation很简洁,我正在努力在我的Django项目中实现这个概念.我很难相信以前没有这样做过.
有谁知道我可以用作指导的任何进一步的资源?
回答的难点在于不知道返回给用户的服务器端资源是什么.
我会编造一些可以作为例子的东西.假设您正在开发一个应用程序,允许您监视您网站上的用户所做的实时评论.我们可以做几件事来实现这个目标:
models.py
class Comment(models.Model):
text = models.TextField()
created = models.DateTimeField(default=datetime.now())
Run Code Online (Sandbox Code Playgroud)
urls.py
url(r'^comments/latest/(?P<seconds_old>\d+)/$',get_latest_comments),
Run Code Online (Sandbox Code Playgroud)
views.py
def get_latest_comments(request, seconds_old):
"""
Returns comments that have been created since the last given number of seconds
have elapsed.
"""
# Query comments since the past X seconds
comments_since = datetime.datetime.now() - datetime.timedelta(seconds=seconds_old)
comments = Comments.objects.filter(created__gte=comments_since)
# Return serialized data or whatever you're doing with it
return HttpResponse(simplejson.dumps(comments),mimetype='application/json')
Run Code Online (Sandbox Code Playgroud)
在客户端,您获取JSON,检查它是否具有值,如果是这样,则枚举项目,并将新项目添加到您的<div>标记或其他任何内容.
正如您所看到的,API的开发仅返回最近更新的项目将根据服务器返回的内容而有所不同.
从您的问题来看,听起来您希望服务器管理识别最近更新的内容,而不是客户端(这是一个好策略).在这种情况下,您需要做的是定义: