EDIT: Проблема решена! Спасибо пользователю limbo за ваш вклад. Это было не решение, но привело меня по правому пути: мой LEFT JOIN показывал все пустые сообщения! Я также включил проверку if-check в качестве хорошей резервной проверки.Python - Показать кнопку удаления, только если пользователь владеет сообщением
Goal: На панели сообщений сообщения на панели сообщений отображается только кнопка удаления сообщения, если зарегистрированный пользователь владеет этим сообщением.
Что работает: Кнопка будет отображать & правильно, если пользователь создал сообщение в базе данных.
Что не удается: Если пользователь не имеет записи в базе данных, на панели мониторинга отображается сообщение «шаблон», которое не имеет значения и не находится в базе данных. На всех панелях пользователей это сообщение «шаблон», связанное с пользователем, не являющимся проводником, видимо. Как только пользователь создает сообщение в базе данных, этот «шаблон» исчезнет, и кнопка «Удалить» будет отображаться правильно. Если я удалю последнее (или только) сообщение пользователя, это сообщение «шаблон» снова появится.
Что я думаю: Что-то не так с моим утверждением «если»? Поскольку он отображает эту запись «шаблона» для каждого пользователя, у которого нет реальных сообщений, независимо от того, во что я вошел в систему.
Вот мой код для dashboard.html
, сокращенно.
{% 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 %}
Мои server.py
с запросом сокращенно - только в случае, если это связано.
//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)
Спасибо!
Разве это не джанго? Почему вы используете библиотеки mysql, если используете django? – e4c5
Я следую учебному курсу, который использует Flask/MySQL/Python, и пока не был введен в django. –
это не похоже на хороший учебник вообще – e4c5