在Flask的url_for函数中禁用字符转义

J-b*_*bob 6 url routes escaping flask

Flask的url_for方法是否有禁用自动转换的选项?因此,如果我getUser使用这样的路由调用端点:/user/<userID>,我想调用url_for('getUser', userID='%')并让它返回/user/%.目前它将逃脱%symobl并给出/user/%25.我想这样做是因为url_for必须在模板编译时运行,但最终的URL是在运行javscript脚本时组成的.我将使用javascript字符串替换方法转换/user/%/user/abcd,但我正在使用的替换脚本要求您使用%符号作为占位符.

Sea*_*ira 8

url_for不支持您的用例,但假设您在Jinja模板中使用它,您可以添加一个调用replace以删除编码:

{{ url_for('get_user', user_id='%') | replace('%25', '%') }}
Run Code Online (Sandbox Code Playgroud)

或者,如果您在普通Python代码中传递URL,您可以使用urllib.parse.unquote(或者urllib.unquote如果您仍在Python 2上):

url = url_for('get_user', 'user_id'='%')
url = unquote(url)
Run Code Online (Sandbox Code Playgroud)

  • 提示:您不需要替换技巧只是为了将查询参数添加到 url。例如:url_for('search', q='some text')。 (2认同)