我有一个项目,其中mongodb记录通过Flask在浏览器中呈现.我在浏览器中也有一些交互,允许用户更新数据库中的记录.因此,例如,单击“投票给我”链接,您可以在记录上增加“投票”.然后该记录的投票结果将出现在“为我投票”链接旁边.
但是,目前我的投票路线看起来像这样,我必须重新加载页面以更新浏览器中的投票结果:
@app.route('/Vote_up/<this_record>')
def Vote_up(this_record):
vandalisms.update({'_id':bson.objectid.ObjectId(this_record)},
{"$inc" : { "Votes": 1 }}, upsert=True)
return redirect("/")
我在这里查看了jquery和flask的烧瓶文档http://flask.pocoo.org/docs/patterns/jquery/,并了解那里发生了什么,但是没有看到如何扩展到我想先更新mongodb集合然后重新加载div的情况或者指定从更新记录中呈现的新投票,例如
<span id='Vote_tally'> {{ item.Votes }} </span>
如果不必重新加载整个页面,我必须做什么才能将该行程包含到数据库并返回浏览器?
解决方法:
我所做的是将这样的东西挂钩到click事件:
$('#Vote_tally').load('/Vote_up/3452/');
“ajax”url返回我想要修改的HTML的位置.
@app.route('/Vote_up/<this_record>')
def Vote_up(this_record):
if already_Voted_for(this_record):
return """<script type="text/javascript">
alert('You can only Vote once');
</script>{0}""".format(count_Votes_for(this_record))
vandalisms.update({'_id':bson.objectid.ObjectId(this_record)},
{"$inc" : { "Votes": 1 }}, upsert=True)
return count_Votes_for(this_record)