Невозможно передать запрос SQL через flask в цикл for - PullRequest
0 голосов
/ 20 июня 2020

Ниже приведен код 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)

ниже - соответствующий индекс. html code:

<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 голосов
/ 20 июня 2020

rows.fetchall() возвращает пустой список, а не None. Разумно Pythoni c писать

if not reviews:
    return ...

, хотя

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

может немного больше наводить на размышления о намерении. Попробуйте один из них.

...