4

私はmongodbレコードがFlaskを介してブラウザーでレンダリングされるプロジェクトを持っています。また、ユーザーがデータベース内のレコードを更新できるようにするブラウザーでの操作もいくつかあります。したがって、たとえば、「Vote for me」リンクをクリックすると、レコードの「投票」を増やすことができます。そのレコードの投票集計は、「Voteformelink」の横に表示されます。

ただし、現在、私の投票ルートは次のようになっています。ブラウザで投票集計を更新するには、ページをリロードする必要があります。

@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("/")

ここhttp://flask.pocoo.org/docs/patterns/jquery/でjqueryとflaskのフラスコのドキュメントを見て、そこで何が起こっているのかを理解しましたが、それをケースに拡張する方法がわかりませんここで、最初にmongodbコレクションを更新してから、更新されたレコードからレンダリングされた新しい投票を指定してdivまたはspanをリロードします。

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

ページ全体を再度リロードせずに、dbへの移動を含めてブラウザに戻るには、何をする必要がありますか?

4

1 に答える 1

4

私がやっていることは、次のようなものをクリックイベントにフックすることです。

$('#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)
于 2012-07-21T06:25:17.267 に答える