2014-09-07 4 views
2

Существует код, который отображает текущее время на веб-странице:Twisted - обновление содержимого веб-страницы без перезагрузки

from twisted.internet import reactor 
from twisted.web.server import Site 
from twisted.web.resource import Resource 
import time 

class ClockPage(Resource): 
    isLeaf = True 
    def render_GET(self, request): 
     return "<html><body>%s</body></html>" % (time.ctime(),) 

resource = ClockPage() 
factory = Site(resource) 
reactor.listenTCP(8880, factory) 
reactor.run() 

Как я могу изменить его, чтобы обновить время вывода каждую секунду без перезагрузки страницы? Должен ли я использовать javascript (ajax/jquery) для отправки запросов GET с фиксированными интервалами или это возможно сделать в коде python?

Спасибо.

ответ

1

Добавить

<head> 
    <meta http-equiv="refresh" content="5"> 
</head> 

в возвращаемой HTML для перезагрузки каждые 5 секунд.

UPD

Для частичного обновления страницы нужно для AJAX запроса для неполных данных страницы:

from twisted.internet import reactor 
from twisted.web.server import Site 
from twisted.web.resource import Resource 
import time 


page = """ 
<html> 
    <head> 
    <script src="//code.jquery.com/jquery-1.11.0.min.js"></script> 
    </head> 
    <body> 
    <div id="timer"> 
     %s 
    </div> 
    </body> 
    <script> 
     function update_timer() { 
     $.get("/timer", function(data) { 
      $("#timer").replaceWith(data); 
      window.setTimeout(update_timer, 1000); 
     }); 
     } 

     window.setTimeout(update_timer, 1000); 
    </script> 
</html> 
""" 


class ClockPage(Resource): 
    isLeaf = True 

    def render_GET(self, request): 
     return page % (time.ctime(),) 


class ClockSubelem(Resource): 
    isLeaf = True 

    def render_GET(self, request): 
     return str(time.ctime()) 


resource = ClockPage() 
timer = ClockSubelem() 
resource.putChild("timer", timer) 
factory = Site(resource) 
reactor.listenTCP(8880, factory) 
reactor.run() 
+0

> без перезагрузки страницы –

+0

Добавлен AJAX пример для частичного обновления страницы –

Смежные вопросы