[英]how to auto-update a Django page only when required?
如何在沒有頁面重新加載的情況下更新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())
urls.py
url(r'^comments/latest/(?P<seconds_old>\d+)/$',get_latest_comments),
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')
在客戶端,您獲取JSON,檢查它是否有值,如果是這樣枚舉項目,並將新項目添加到<div>
標簽或其他任何內容。
正如您所看到的,API的開發僅返回最近更新的項目將根據服務器返回的內容而有所不同。
從您的問題來看,聽起來您希望服務器管理識別最近更新的內容,而不是客戶端(這是一個好策略)。 在這種情況下,您需要做的是定義:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.