带空格的flask url参数生成带空格的url

时间:2014-02-18 11:09:51

标签: python url flask url-routing percent-encoding

我正在尝试将用户提供的字符串作为Flask URL参数传递。 url_for(func_name, param="string with spaces")或类似名称会生成带空格的网址。

如果用户输入带空格的字符串,则生成的url有空格,似乎有效。

此外,如果我输入带有%20的网址,它似乎会重定向到包含空格的网址。 我认为带空格的网址是个坏主意。

如何使其正常工作(url_for和重定向)? 或者我应该接受它?

P.S。 传递用户提供的字符串作为参数安全吗?如果不是,我应该如何清理用户输入字符串?

1 个答案:

答案 0 :(得分:2)

不,Flask正确生成URL编码的URL;使用现有应用程序进行演示:

>>> with app.test_request_context('/'):
...     print url_for('core.city', city='new york')
... 
/new%20york
另一方面,

您的浏览器可能会选择显示此类网址已解码以便于阅读。

url_for()引用输入为URL安全;编码的URL不能包含可以解释为HTML的值,因此就用户提供的值而言,您是安全的。