Как правильно отправлять переменные в Flask Route, используя url_for ()? - PullRequest
0 голосов
/ 29 июня 2019

Я видел пару других вопросов, таких как этот , в которых запрашивались способы отправки переменных из HTML обратно в колбу с помощью url_for (), и поэтому я тоже попробовал.

{% 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 Ответ

2 голосов
/ 29 июня 2019

Вы запрашиваете фильм, только если метод запроса «POST»

Возможно, вы получили ошибку, потому что вместо этого вы вызывали маршрут с помощью метода «GET».Обычно это имеет место, если вы просто обращаетесь к URL-адресу непосредственно из браузера (без использования форм и т. Д.).

Попробуйте удалить этот if оператор

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...