更新Google App Engine中的投票计数

时间:2014-04-09 11:38:04

标签: python google-app-engine http google-cloud-datastore

我正在尝试使用Google App Engine为帖子创建投票按钮。 目前我正在实施它:

class Latest(Handler):

    def get(self):
        posts = recent_posts()
        qt = memcache.get('recent_posts_qt')
        if qt:
            qt = time.time() - qt
        self.render('latest.html', articles = posts, qt = qt)

    def post(self):
        post_id = int(self.request.get("id"))
        q = AllPost.get_by_id(post_id)
        q.votes += 1
        q.put()
        time.sleep(0.5)
        update = recent_posts(update=True) # for memcache
        posts = db.GqlQuery("SELECT * FROM AllPost ORDER BY created DESC LIMIT 10")
        posts = list(posts)
        self.render('latest.html', articles=posts)

我正在使用的HTML是:

<div class="article-votes">Votes: {{item.votes}}
    <form action="/latest" method="post">
        <input name="id" value={{item.key().id()}}>
        <button>Vote+</button>
    </form>
</div>

如果我在投票后尝试刷新页面,我会收到&#34;确认表单提交提醒&#34;。如果不发生这种情况,必须有更好的方法来实现这一点。是否可以更新投票计数和数据存储区而无需再次呈现页面?

1 个答案:

答案 0 :(得分:3)

刷新POST请求将始终触发该确认窗口,这在大多数浏览器中都是常见的行为。您可以使用AJAX(XMLHTTPRequest)通过Javascript密切控制表单POST请求,这不会导致另一个页面呈现。