如何使用url_for()将变量正确发送到Flask Route?

时间:2019-06-29 02:03:47

标签: python flask

我还遇到了其他一些问题,例如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)的最后一行。我可以知道我哪里出了问题吗?

1 个答案:

答案 0 :(得分:2)

您仅在请求方法为“ POST”的情况下查询电影

可能是因为您改用“ GET”方法调用路由而导致错误。如果您只是直接从浏览器访问URL(而不使用表单等),通常就是这种情况。

尝试删除该if语句