Python 烧瓶重定向不正确?

Python 烧瓶重定向不正确?,python,flask,Python,Flask,因此,我使用这段代码从html获取输入,然后将其重定向到另一个函数 @app.route('/', methods = ['POST']) def search(): rsn = request.form['username'] return redirect(url_for('username', rsn=rsn)) 它重定向到以下功能: @app.route('/username=<rsn>', methods = ['GET', 'POST']) def us

因此,我使用这段代码从html获取输入,然后将其重定向到另一个函数

@app.route('/', methods = ['POST'])
def search():
    rsn = request.form['username']
    return redirect(url_for('username', rsn=rsn))
它重定向到以下功能:

@app.route('/username=<rsn>', methods = ['GET', 'POST'])
def username(rsn):
    ...
但由于某种原因,url变成了

/username%3DHey
为什么?

=
是a,而Flask是
%3D
的正确字符。它是一个保留字符,因为它在和中具有特殊意义

您的浏览器和Flask仍将正确处理角色


请注意,Flask不支持带有路径参数的路由(路径元素后的键值对,由
冒号分隔),其中
=
将是有效的分隔符字符;相反,您通常直接使用路径元素作为参数。如果您真的想,您可以编写一个捕获
(;键(=值)?)*
模式。

%3D
=
的编码百分比。Flask将等号编码为标准约定。浏览器仍能正确解释这一点。

因为这是URL路径中
=
字符的正确编码。您的浏览器和烧瓶仍然正确处理URL。@MartijnPieters好的,谢谢!可能不太相关。。。但是为什么“/”没有被编码为“%2F”?@Bonjouri:因为Flask专门使用它作为路径分隔符,所以它的目的是。
/username%3DHey