Ich versuche, eine Web-App wie ein Mini-Tweets zu machen. Die Posts werden aus einer Datenbank herausgezogen und ich möchte für jeden Post einen "up vote" Knopf haben, wie das folgende Bild.Kolben mit vielen Tasten und Datenbank-Update
Jeder Beitrag hat eine id
, author
, body
und likes
Eigenschaft. Wenn auf eine Abstimmung nach oben geklickt wird, muss die Eigenschaft likes
aktualisiert werden.
Meine Frage ist, wie Sie feststellen können, auf welche Schaltfläche geklickt wird. Was wäre eine gute Strategie in diesem Fall für die route()
Funktion und die HTML-Vorlage?
Ich dachte an einen Namen zu jeder Schaltfläche hinzufügen und post.id
in den Namen eingeben, dann überprüfen, ob request
es hat. Aber die Anzahl der Beiträge ist nicht bekannt vorher, wie soll ich schreiben request
in route()
Funktion?
Meine aktuelle Vorlage ist wie folgt
<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>
und die aktuelle route()
ist wie dies
@bbs.route('/', methods=['GET', 'POST'])
def index():
posts = Post.query.all()
return render_template('bbs/index.html', posts=posts)
Danke für die Antwort. Ich habe immer noch Schwierigkeiten damit, weil ich kein JavaScript-Wissen habe. In meiner 'upvote' route Funktion gebe ich json.dumps ({'likes': post.likes})' zurück. Im JavaScript scheint 'alert (data)' das richtige Wörterbuch zu zeigen, aber wenn ich 'data.likes' verwende, gibt es' undefined'. Was habe ich falsch gemacht? – nos
versuchen Sie: 'data ['likes']' ' –