Простой HTML-заполнитель:
<div id="tablehere"></div>
Кодекса Jquery для AJAX-опроса каждые 10 секунд:
setInterval(function(){
$.ajax({ url: "http://yourapp.appspot.com/thetable",
success: function(data) {
maketable(data);
}
});
}, 10000);
JS сделать и показать новую таблицу (есть миллион альтернатив здесь и Я не эксперт JS, это только один из способов):
maketable = function(data) {
var tabdiv = document.getElementById("tablehere");
var tabhead = '<table><thead><tr><th>Col1</th><th>Col2</th></tr></thead><tbody>';
for(var i=0,len=data.length; i<len; i++) {
tabhead += '<tr><td>' + data[i].col1 + '</td><td>' + data[i].col2 + '</td></tr>';
}
tabhead += '</tbody></table>';
tabdiv.innerHTML = tabhead ;
}
и все, клиенты.
стороне сервера, app.yaml
будет иметь обработчик
url: /thetable
script: thetable.app
и в thetable.py
после всех необходимых импорта:
class Tablerow(ndb.Model):
col1: ndb.StringProperty()
col2: ndb.StringProperty()
class Tablehandler(webapp2.RequestHandler):
def get(self):
data = [tr.to_dict() for tr in Tablerow.query().iter()]
response.write(json.dumps(data))
app = webapp2.WSGIApplication([('/thetable', Tablehandler)])
Уф - очень скелетную, но все же мне потребовалось некоторое время, чтобы написать , Но, как вы видите, часть движка приложения действительно тривиальна - это HTML, Javascript и JQuery, которые занимают на себе большую часть усилий! -)
Все, что вам нужно с стороны GAE, является обработчиком для URL-адрес, обслуживающий только JSON соответствующих данных. На сценарии JS это вызов ajax, самый простой в JQuery. Чтобы получить более сложные, а не периодические опросы, вы можете использовать Channel, https://cloud.google.com/appengine/docs/python/channel/, постоянное соединение, которое позволяет серверу инициировать отправку при обнаружении изменений, чтобы JS не выполнял 't должен опросить - теперь *, что * классно. Но, лучше, начните просто, я думаю. –
Сладкий! Это объяснение имеет смысл. Поработаем над этим и вернемся к вам. Спасибо за ссылку о канале. Выглядит очень круто. – tabchas
Уходящий канал на будущее Я набросал скелет (но все еще длинный, почти исключительно на стороне html/js/jquery вещей - часть GAE действительно тривиальна!). Итак, как вы можете видеть, «то, что мне нужно изменить на бэкэнде, чтобы позволить этот вид освежения» (без канала, просто по опросу) «по сути ничего общего со всеми намерениями и целями» :-) –