Не удается удалить объекты из списка после запроса MySQL с помощью peewee в Flask

У меня есть пара ссылок на главной странице моего веб-сайта, которые ссылаются на подстраницы, где я перечисляю некоторые новости команды (список заголовков и ссылок).

Когда пользователь нажимает на /Nba-Teams/Lakers, он/она будет перенаправлен в новое представление, где все работает нормально (я перечисляю соответствующие новости о Лейкерс) в первый раз, но когда пользователь возвращается на домашнюю страницу и нажимает на ссылку /Nba-Teams/Spurs, это также будет работать, но список, на мой взгляд, всегда будет содержать предыдущий контент.

Это похоже на то, что каждый раз, когда вызывается запрос, предыдущие результаты не исчезают из списка teamNews. Я действительно новичок в Python, поэтому я был бы очень признателен, если бы кто-нибудь мог показать мне, что я делаю неправильно.

Я предполагаю, что teamNews не обнуляется при загрузке новой страницы, но, к сожалению, я не смог убедиться в этом. Как видите, я попытался удалить его содержимое сразу после того, как передал данные в html, но ничего не происходит.

Поскольку html использует содержимое переменной nbaTeamNews, я не уверен, что это проблема форматирования HTML.

teamNews = []

def getTeamNews (team_to_query):

    for obj in teams.select().where(teams.Nba == team_to_query):
        teamNews.append(obj)
    return teamNews    

@app.route('/Nba-Teams/<team>')
def team_page(team):

    return render_template("teams.html", nbaTeamNews=getTeamNews(team))
    del teamNews

HTML:

{% block body %}
<ul class=entries>
  {% for entry in nbaTeamNews %}
    <li><h2><a href="{{ entry.slug }}">{{ entry.newsTitle }}</a></h2>
  {% else %}
    <li><em>Unbelievable.  No entries here so far</em>
  {% endfor %}
  </ul>
{% endblock %}

person sabiv    schedule 02.12.2015    source источник


Ответы (1)


Нет, вы не можете добраться до строки del teamNews, потому что вы уже вернули ответ, поэтому предыдущие результаты все еще лежат там.

Вместо этого вы можете сделать так:

# No teamNews here.

def getTeamNews(team_to_query):
    # Since you don't do any other things, directly assign it is enough, right?
    # No need for a list comprehension or a for loop here.
    teamNews = teams.select().where(teams.Nba == team_to_query)
    return teamNews 
person lord63. j    schedule 03.12.2015