gpt4 book ai didi

Python - 仅当用户拥有帖子时才显示删除按钮

转载 作者:可可西里 更新时间:2023-11-01 07:09:31 26 4
gpt4 key购买 nike

编辑: 问题已解决!感谢用户 limbo 的输入。这不是解决方案,但让我走上了正确的道路:我的 LEFT JOIN 显示了所有空帖子!我还包括了 if-defined 检查,作为一个很好的备份检查。

目标:在消息发布仪表板上,仅当登录用户拥有该帖子时才显示删除帖子按钮。

作用:如果用户在数据库中创建了帖子,按钮将正确显示和运行。

失败的地方:如果用户在数据库中没有帖子,仪表板会显示一个没有值(value)且不在数据库中的"template"帖子。在所有用户的仪表板上,与非发帖用户关联的这个"template"帖子是可见的。一旦用户在数据库中创建了一个帖子,这个"template"就会消失并且删除按钮会正确显示。如果我删除用户的最后一个(或唯一一个)帖子,这个"template"帖子将重新出现。

我的想法:我的“if”语句有问题吗?因为它会为没有任何真实帖子的每个用户显示此"template"帖子,无论我以谁身份登录。

这是我的 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)

谢谢!

最佳答案

我认为您需要做的是在显示消息之前检查消息是否真实。

假设您使用的是 jinja2,您需要在 {% for message in messages: %} 之前插入此 {% if messages is defined %} 以检查消息集合不为空。

当然不要忘记在最后关闭您的 if {% endif %}

关于Python - 仅当用户拥有帖子时才显示删除按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37622715/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com