私はミニ・ツイートのようなWebアプリケーションを作ろうとしています。投稿はデータベースから引き出され、次の画像のように、各投稿に対して「投票」ボタンが表示されます。多くのボタンとデータベースが更新されたフラスコ
各ポストはid
、author
、body
、およびlikes
性質を持っています。議事録をクリックすると、likes
プロパティを更新する必要があります。
私の質問はどのボタンをクリックするかを決定する方法です。この場合、route()
関数とhtmlテンプレートの良い戦略は何でしょうか?
私は各ボタンに名前を付け加え、post.id
を名前に入れて、request
があるかどうかをチェックしていました。しかし、手の前に投稿の数は分かっていないので、のチェックをroute()
の機能でどう書かなければならないのですか?
<table class="table table-striped">
{% for post in posts %}
<tr>
<td> {{ post.id }} </td>
<td> <img src="{{ post.author.avatar(50) }}"> </td>
<td> <b>{{ post.body }}</b> </td>
<td> <button type="button" name='{{'up.'+ post.id|string}}' class="btn btn-default">
<span class="glyphicon glyphicon-thumbs-up" aria-hidden="true"></span>
</button>
{{ post.likes}} </td>
</tr>
{% endfor %}
</table>
と現在のroute()
を次のように私の現在のテンプレートがある
それを行うにはきれいな方法は、あなたのbutton
タグで、データ属性を追加することです。この
@bbs.route('/', methods=['GET', 'POST'])
def index():
posts = Post.query.all()
return render_template('bbs/index.html', posts=posts)
感謝を。私はまだjavascriptの知識の欠如のためにこれに苦労しています。私の 'upvote'ルート関数では、' json.dumps({'likes':post.likes})を返します。 javascriptでは 'alert(data)'は正しい辞書を表示しているようですが、 'data.likes'を使うと' undefined 'となります。私は何を間違えたのですか? – nos
try: 'data ['likes']' –