编辑:问题解决了!感谢用户对您的输入感到不满。这不是解决方案,而是让我沿着正确的道路走下去:我的LEFT JOIN显示了所有空帖!我还包括if-defined check,作为一个很好的备份检查。
目标:在消息发布信息中心,如果登录用户拥有该帖子,则只显示delete-post按钮。
什么有效:按钮会显示&如果用户已在数据库中创建帖子,则功能正常。
失败的内容:如果用户在数据库中没有帖子,则信息中心会显示一个'模板'没有价值且不在数据库中的帖子。对所有用户而言#39;仪表板,这个'模板'与非发布用户关联的帖子是可见的。一旦用户在数据库中创建帖子,这个'模板'将消失并删除按钮显示正确。如果我删除了用户的上一篇(或唯一一篇)帖子,则该“模板”模板将被删除。帖子将重新出现。
我的想法:我的'如果'声明?由于它显示了这个模板'发布每个没有任何真实帖子的用户,无论我登录的是谁。
这是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)
谢谢!
答案 0 :(得分:0)
我认为您需要做的是在显示消息之前检查消息是否真实。
假设您使用的是jinja2,则需要在{% if messages is defined %}
之前插入此{% for message in messages: %}
以检查邮件集合是否为空。
当然不要忘记最后关闭if {% endif %}
。