在 Flask 中使用 peewee 查询 MySQL 后无法从列表中删除 objects
Can't remove objects from list after MySQL query with peewee in Flask
我的网站主页上有几个 links,links 到我列出一些团队新闻的子页面(标题列表和 links)。
当用户点击 /Nba-Teams/Lakers
he/she 时会在第一时间被转发到一个一切正常的新视图(我列出了有关湖人队的相关新闻),但是当用户回到主页点击/Nba-Teams/Spurs
link 也可以,但是在我看来的列表总是会包含之前的内容。
就像每次调用查询时,以前的结果都不会从 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 %}
不,您无法访问 del teamNews
行,因为您已经 return 响应,因此之前的结果仍然存在。
相反,您可以这样做:
# 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
我的网站主页上有几个 links,links 到我列出一些团队新闻的子页面(标题列表和 links)。
当用户点击 /Nba-Teams/Lakers
he/she 时会在第一时间被转发到一个一切正常的新视图(我列出了有关湖人队的相关新闻),但是当用户回到主页点击/Nba-Teams/Spurs
link 也可以,但是在我看来的列表总是会包含之前的内容。
就像每次调用查询时,以前的结果都不会从 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 %}
不,您无法访问 del teamNews
行,因为您已经 return 响应,因此之前的结果仍然存在。
相反,您可以这样做:
# 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