Python - 仅当用户拥有帖子

时间:2016-06-03 20:17:46

标签: python mysql button

编辑:问题解决了!感谢用户对您的输入感到不满。这不是解决方案,而是让我沿着正确的道路走下去:我的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)

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

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