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

时间:2014-12-04 17:32:43

标签: url routes flask escaping

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

1 个答案:

答案 0 :(得分:8)

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

{{ url_for('get_user', user_id='%') | replace('%25', '%') }}

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

url = url_for('get_user', 'user_id'='%')
url = unquote(url)