为什么我的查询会变成布尔值,我该如何防止这种情况发生,以便可以对其进行迭代?

2024-04-26 13:17:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我在模板中创建了一个链接,指向一个路由,该路由应该呈现一个页面,允许用户查看登录者的姓名,以及他们曾经发表的所有帖子。我做了必要的查询,但它告诉我类型错误:

Bool is not iterable.

我试图将变量转换成字符串,但它没有显示我需要的信息。我实际上需要访问整个表,以便可以自定义模板上显示的内容。我特别需要一个for循环来遍历表中的所有条目,并按我指定的列列出每个条目。你知道吗

这是路线:

@app.route('/users/<id>/view')
def view_user(id):
    mysql = connectToMySQL('quotes_dash2')
    query = 'SELECT * FROM quotes WHERE user_id = %(q_id);'
    data = {
        "q_id": id
    }
    userQuotes = mysql.query_db(query, data)

    mysql2 = connectToMySQL('quotes_dash2')
    query2 = "SELECT * FROM users WHERE id = %(us_id);"
    data2 = {
        "us_id": session['userid']
    }
    our_user = mysql2.query_db(query2, data2)

    return render_template('view.html', userQuotes = userQuotes, ourUser = our_user)

这是我试图创建的模板(纯html):

<h1>{{ourUser['first_name']}} {{ourUser['last_name']}}'s Quotes</h1>


    <ul>
        {% for quote in userQuotes %}
        <li>
            {{ quote['author'] }}: {{ quote['quote_content'] }}
            <hr>
        </li>

        {% endfor %}
    </ul>

我希望这样,当我点击用户名(从另一个页面)时,它会将我带到一个视图页面,该页面的顶部有用户名,以及用户所发的所有帖子(它们是作者的引语)。我得到的是:

TypeError: 'bool' object is not iterable

回溯的重点是:

return render_template('view.html', userQuotes = userQuotes, ourUser = our_user)

以及

{% for quote in userQuotes %}

我知道userQuotes是一个bool,但我并不打算这样做,我不知道如何更改它,以便可以遍历由userQuotes表示的表。你知道吗

任何帮助都将不胜感激!你知道吗


Tags: 用户view模板id路由forhtmlour
1条回答
网友
1楼 · 发布于 2024-04-26 13:17:30

我解决了问题。它现在起作用了。如果其他人遇到这个问题并感到好奇,问题是我不小心忘了在查询的结束括号后键入字母“s”。所以,应该是%(us\ id)而不是%(us\ id)。你知道吗

相关问题 更多 >