在使用Flask中的peewee进行MySQL查询后,无法从列表中删除对象

时间:2015-12-02 21:54:27

标签: python flask peewee

我的网站主页上有几个链接,链接到我列出一些团队新闻(标题和链接列表)的子页面。

当用户点击/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 %}

1 个答案:

答案 0 :(得分: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