J'essaie de faire une application web comme un mini-tweets. Les messages sont retirés d'une base de données et je veux avoir un bouton «up vote» pour chaque message, comme l'image suivante.flacon avec de nombreux boutons et mise à jour de la base de données
Chaque poste a un id
, author
, body
et likes
propriété. Lorsqu'un clic sur un clic est effectué, la propriété likes
doit être mise à jour.
Ma question est comment déterminer quel bouton est cliqué. Quelle serait une bonne stratégie dans ce cas pour la fonction route()
et le modèle html?
Je pensais ajouter un nom à chaque bouton et mettre post.id
dans le nom, puis vérifier si request
l'a. Mais le nombre de messages ne sont pas connus à l'avance, comment dois-je écrire la fonction route()
vérifier request
?
Mon modèle actuel est le suivant
<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>
et la route()
actuelle est comme ce
@bbs.route('/', methods=['GET', 'POST'])
def index():
posts = Post.query.all()
return render_template('bbs/index.html', posts=posts)
Merci pour la réponse. J'ai encore du mal à cela en raison du manque de connaissances en JavaScript. Dans ma fonction de route 'upvote', je' renvoie json.dumps ({'likes': post.likes}) '. Dans le javascript, 'alert (data)' semble montrer le dictionnaire correct, mais quand j'utilise 'data.likes', il donne' undefined'. Qu'ai-je fait de mal? – nos
try: 'data ['aime']' –