EDIT: Problem gelöst! Vielen Dank an Benutzer Limbo für Ihre Eingabe. Es war nicht die Lösung, sondern führte mich auf den richtigen Weg: mein LEFT JOIN zeigte alle Null-Beiträge! Ich habe auch den if-definierten Scheck als einen guten Back-up-Check aufgenommen.Python - Zeige Löschen-Taste nur, wenn Benutzer Post besitzt
Ziel: Zeigen Sie in einem Nachrichtenpost-Dashboard nur die Schaltfläche "Delete-Post" an, wenn der angemeldete Benutzer diesen Post besitzt.
Was funktioniert: Schaltfläche wird angezeigt & funktioniert einwandfrei, wenn Benutzer einen Beitrag in die Datenbank erstellt hat.
Was schlägt fehl: Wenn Benutzer keinen Post in der Datenbank hat, zeigt das Dashboard einen 'Vorlage' Post, der keinen Wert enthält und nicht in der Datenbank ist. Auf den Dashboards aller Benutzer ist dieser "Vorlage" -Post sichtbar, der mit dem nicht postenenden Benutzer verknüpft ist. Sobald der Benutzer einen Beitrag in die Datenbank erstellt hat, wird diese "Vorlage" verschwinden und die Schaltfläche wird korrekt angezeigt. Wenn ich den letzten (oder einzigen) Beitrag des Benutzers lösche, wird dieser "Vorlage" -Posten wieder angezeigt.
Was ich denke: Etwas stimmt nicht mit meiner 'if' Aussage? Seit es diesen "Vorlagen" -Post für jeden einzelnen Benutzer anzeigt, der keine echten Posts hat, unabhängig davon, bei wem ich angemeldet bin.
Hier ist mein Code für dashboard.html
, abgekürzt.
{% for message in messages: %}
//'mu_id' is messages.user_id as defined in server.py
//'user[0]['id'] is logged-in user id
//using 'session['id'] instead produces same (unwanted) results
{% if message['mu_id'] == user[0]['id']: %}
// show delete button (this part worked, don't worry)
{% endif %}
//this displays each message with poster name
{{message['first_name']}}<br>
{{message['message']}}
{% endfor %}
Mein server.py
, mit Abfrage abgekürzt - nur für den Fall es in engen Zusammenhang steht.
//this query uses session['id'] to grab user data
query = "SELECT * FROM users WHERE id = :id LIMIT 1"
data = {
'id': session['id']
}
user = mysql.query_db(query, data)
// this query joins messages & users tables
mquery = "SELECT first_name, message, messages.id AS message_id, messages.user_id AS mu_id FROM users LEFT JOIN messages ON users.id = messages.user_id"
messages = mysql.query_db(mquery)
//Long query here to get comments, by joining messages & users table to comments table.
return render_template('dashboard.html', user=user, messages=messages, comments=comments)
Vielen Dank!
Ist das nicht Django? Warum verwenden Sie MySQL-Bibliotheken, wenn Sie django verwenden? – e4c5
Ich folge einem Tutorial, das Flask/MySQL/Python verwendet und noch nicht in Django eingeführt wurde. –
es scheint nicht wie ein gutes Tutorial überhaupt – e4c5