Почему на этой странице отображается только один пост? - PullRequest
0 голосов
/ 15 июня 2019

так вот мой код для страницы избранного:

@app.route('/favorites')
@login_required
def favorites():
    cur=mysql.connection.cursor()
    r = cur.execute("SELECT post_id FROM favorites WHERE username = %s",[session['username']])
    if r==0:
        msg='No favorites Found'
        return render_template('favoritest.html',msg=msg)
    else:
        data=cur.fetchall()
        for row in data:
            pos_id = row["post_id"]
        cur.execute("SELECT* FROM posts WHERE id=%s ORDER BY created_at DESC",[pos_id])
        naa=cur.fetchall()
        cur.close()
        return render_template("favoritest.html",naa = naa)

и это мой шаблон:

{% block body %}
        {% for itm in naa %} 
            <tr>
<td><a href="posts/{{itm['id']}}/{{itm['title']}}">{{itm['title']}}</a></td></tr>
        {% endfor %}
{% endblock %}

он показывает только один пост, даже если их было больше одного, так в чем здесь проблема и как ее исправить?

СПАСИБО

1 Ответ

1 голос
/ 15 июня 2019

В этом фрагменте

for row in data:
    pos_id = row["post_id"]
cur.execute("SELECT* FROM posts WHERE id=%s ORDER BY created_at DESC",[pos_id])

Вы выполняете запрос к базе данных только один раз.Поэтому вы должны включить его в цикл for следующим образом:

for row in data:
    pos_id = row["post_id"]
    cur.execute("SELECT* FROM posts WHERE id=%s ORDER BY created_at DESC",[pos_id])

Понял это из комментария @Matthias

Обновление:

naa = []
for row in data:
    pos_id = row["post_id"]
    cur.execute("SELECT* FROM posts WHERE id=%s ORDER BY created_at DESC",[pos_id])
    naa.append(cur.fetchall())
cur.close()
return render_template("favoritest.html",naa = naa)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...