从 Flask 的 url_for 中获取 URL 中的奇怪工件
Getting strange artifacts in URL from Flask's url_for
我似乎找不到关于这个特定问题的任何信息。我在 html 页面中使用 url_for
,它在查询字符串之前返回一些奇怪的东西。是什么导致了以下行为,我怎样才能让实际的 URL 与预期相符?
来电:href="{{ url_for('add_movie', tmdb_id=movie['movie_id']) }}"
预期URL:'/add?tmdb_id=1234'
实际URL:'/add/%7Btmdb_id%7D?tmdb_id=1234'(奇怪的粗体部分)
电影列表是通过调用 API 的函数填充的。我验证了从 API 调用返回的 id
的列表看起来不错。
Python:
class TmdbMovie:
def __init__(self, tmdb_id, title, release_date):
self.movie_id = tmdb_id
self.title = title
self.release_date = release_date
@app.route('/add/{tmdb_id}', methods=['POST'])
def add_movie(tmdb_id):
HTML:
{% for movie in movies %}
<p>
<a href="{{ url_for('add_movie', tmdb_id=movie['movie_id']) }}"> {{ movie['title'] }} - {{ movie['release_date'] }}</a>
</p>
{% endfor %}
在路由注册中,必须使用angular brackets作为参数:
@app.route('/add/<tmdb_id>', methods=['POST'])
def add_movie(tmdb_id):
%7B
和%7D
字符串是URL-encoded{}
括号。
我似乎找不到关于这个特定问题的任何信息。我在 html 页面中使用 url_for
,它在查询字符串之前返回一些奇怪的东西。是什么导致了以下行为,我怎样才能让实际的 URL 与预期相符?
来电:href="{{ url_for('add_movie', tmdb_id=movie['movie_id']) }}"
预期URL:'/add?tmdb_id=1234'
实际URL:'/add/%7Btmdb_id%7D?tmdb_id=1234'(奇怪的粗体部分)
电影列表是通过调用 API 的函数填充的。我验证了从 API 调用返回的 id
的列表看起来不错。
Python:
class TmdbMovie:
def __init__(self, tmdb_id, title, release_date):
self.movie_id = tmdb_id
self.title = title
self.release_date = release_date
@app.route('/add/{tmdb_id}', methods=['POST'])
def add_movie(tmdb_id):
HTML:
{% for movie in movies %}
<p>
<a href="{{ url_for('add_movie', tmdb_id=movie['movie_id']) }}"> {{ movie['title'] }} - {{ movie['release_date'] }}</a>
</p>
{% endfor %}
在路由注册中,必须使用angular brackets作为参数:
@app.route('/add/<tmdb_id>', methods=['POST'])
def add_movie(tmdb_id):
%7B
和%7D
字符串是URL-encoded{}
括号。