Python 用于在数据从链接操作或表单传输到mongodb集合后更新Flask模板的AJAX

Python 用于在数据从链接操作或表单传输到mongodb集合后更新Flask模板的AJAX,python,ajax,mongodb,flask,Python,Ajax,Mongodb,Flask,我有一个项目,其中mongodb记录通过Flask在浏览器中呈现。我在浏览器中还有一些交互,允许用户更新数据库中的记录。因此,例如,单击“为我投票”链接,您可以在记录上增加“投票”。该记录的投票记录将出现在“投票给我”链接旁边 但是,目前我的投票路线如下所示,我必须重新加载页面以在浏览器中更新投票记录: @app.route('/vote_up/<this_record>') def vote_up(this_record): vandalisms.update({'_id

我有一个项目,其中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("/")
@app.route('/vote_up/'))
def投票(此记录):
vandalisms.update({''u id':bson.objectid.objectid(此记录)},
{“$inc”:{“投票”:1}},upsert=True)
返回重定向(“/”)
我在这里查看了jquery和flask的flask文档,了解了其中的情况,但没有看到如何将其扩展到我想首先更新mongodb集合,然后重新加载一个div或span,指定从更新的记录中呈现的新投票,例如

    <span id='vote_tally'> {{ item.votes }} </span>
{{item.vows}

我需要做些什么,才能在不重新加载整个页面的情况下,将访问db和返回浏览器的过程包括在内?

我要做的是将类似这样的内容挂接到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)
@app.route('/vote_up/'))
def投票(此记录):
如果已经投票支持(此记录):
返回“”
提醒(“您只能投票一次”);
{0}”“。格式(此记录的计数投票)
vandalisms.update({''u id':bson.objectid.objectid(此记录)},
{“$inc”:{“投票”:1}},upsert=True)
返回计数(此记录)

对于这个端点,我可能会使用
POST
,但对于所有其他点,+1是一个很好的例子@SeanVieira:POST使用
jQuery.load
非常简单,只需传递一个键/值字典作为第二个参数,它将进行POST调用而不是GET调用。由于原始示例没有提到POST方法的使用,为了简单起见,我省略了它,它可以帮助防止客户端和服务器之间的攻击性代理进行缓存,而且在惯用用法上是正确的,因为他正在更改记录。@Paulo cool谢谢。虽然我对count_voces_(此记录)应该是什么还不太清楚,但这是否只是更新后在数据库中对.find()该记录的查询?@drquo:函数名反映了我的猜测,即您希望在
\vote_taly
上显示Upvoces的总数,但我想你可以根据需要调整样品。基本上,
count\u voces\u for(some\u record)
应该返回您想要在
\vote\u taly
中显示的任何内容,在计算完投票后,也许我应该将其命名为
get\u vote\u tally\u for(this\u record)
,以明确说明问题。