Python 烧瓶重定向不正确?
因此,我使用这段代码从html获取输入,然后将其重定向到另一个函数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
@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