无法将SQL查询通过烧瓶传递给for循环

时间:2020-06-20 00:53:52

标签: python flask jinja2

下面是app.py代码。由于我已将评论打印到控制台,因此SQL查询工作正常。但是,一旦将其传递给html模板,就无法使用jinja遍历评论。

def index():

    # find all reviews
    rows = db.execute("SELECT review, name, date, rating, isbn  FROM reviews WHERE username=:username ORDER BY date", {"username":session["username"]})

    reviews = rows.fetchall()

    if reviews == None:
        return render_template("index.html", username=session["username"], message="No reviews written. Write one today!")

    print(reviews)
    return render_template("index.html", username=session["username"], reviews=reviews)

以下是相关的index.html代码:

<div class="padding">
        <h3>Your Recent Reviews</h3>
        <p><a href="/search">{{message}}</a></p>
        {% for review in reviews %}
            {% set rating = review["rating"] | int %}
            <div class="table-responsive review">
                <table class="table-hover" style="width: 100%">
                    <tbody><tr style="transform: rotate(0);">
                        <th scope="row"><a href="/book/{{review['isbn']}}" class="stretched-link"></a></th>
                        <td><h6>{{review["date"]}} | {{review["name"]}} commented: </h6>
                            {{review["review"]}}<br>
                            {% for i in range(rating) %}
                                <i class="fa fa-star" aria-hidden="true"></i>
                            {% endfor %}
                        </td>
                    </tr></tbody>
                </table>
            </div>
        {% endfor %}
    </div>

1 个答案:

答案 0 :(得分:0)

rows.fetchall()返回一个空列表,而不是None

if not reviews:
    return ...

尽管

if len(reviews) == 0:
    return ...

可能更暗示意图。尝试其中之一。