我还遇到了其他一些问题,例如this one,他们要求使用url_for()将变量从HTML发送回烧瓶的方法,因此我也尝试过。
{% for movie in movies %}
<article class="media content-section">
<div class="media-body">
<div class="article-metadata">
<h3><a class="mr-2 mt-4" href="{{url_for('movies', movie_id=movie.id)}}" method="POST">{{ movie.title }}</a></h3>
<small class="text-muted">{{ movie.year }}</small>
<small class="text-muted">ID : {{ movie.id }}</small>
</div>
<h6><a class="article-title">Rating : {{ movie.rating }}</a></h6>
</div>
</article>
{% endfor %}
如第5行所示,我做了一个url_for()并将名为movie_id的变量发送到我的路由,该变量是我的电影对象的id属性,看起来像这样,
@app.route('/movies/<movie_id>', methods=['GET','POST'])
def movies(movie_id):
if request.method == 'POST':
movie = Movie.query.filter_by(id=movie_id).first()
return render_template('movies.html', movie=movie)
但是,在运行代码时,出现错误提示UnboundLocalError: local variable 'movie' referenced before assignment
。这发生在我的路线return render_template('movies.html', movie=movie)
的最后一行。我可以知道我哪里出了问题吗?
答案 0 :(得分:2)
您仅在请求方法为“ POST”的情况下查询电影
可能是因为您改用“ GET”方法调用路由而导致错误。如果您只是直接从浏览器访问URL(而不使用表单等),通常就是这种情况。
尝试删除该if
语句