【问题标题】:Getting strange artifacts in URL from Flask's url_for [duplicate]从 Flask 的 url_for [重复] 在 URL 中获取奇怪的工件
【发布时间】:2022-01-22 02:29:37
【问题描述】:

我似乎找不到关于这个特定问题的任何东西。我在 html 页面中使用url_for,它在查询字符串之前返回了一些时髦的东西。是什么导致了以下行为,如何让实际 URL 与预期匹配?

来电:href="{{ url_for('add_movie', tmdb_id=movie['movie_id']) }}"

预期网址: '/add?tmdb_id=1234'

实际网址: '/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 %}

【问题讨论】:

    标签: python html flask url-for


    【解决方案1】:

    在路由注册中,参数必须使用angular brackets

    @app.route('/add/<tmdb_id>', methods=['POST'])
    def add_movie(tmdb_id):
    

    %7B%7D 字符串是 URL 编码的 {} 括号。

    【讨论】:

    • 我不敢相信我错过了 - 我知道修复会很愚蠢/简单。下次我肯定会更加努力地查看编码字符串。我从来没有想过这就是正在发生的事情。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2022-11-12
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 2022-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多