Flask - url_for自动将'='转换为'%3D'

时间:2016-07-10 21:38:49

标签: python-3.x flask

所以..我在使用Flask的url_for时遇到了一些问题。代码仍然有效..但是当用户导航到url_for生成的链接时,链接在地址栏中看起来很糟糕。

即,我有一个装饰视图功能如下:

NSString *numString = @"\U0000202a 123 456 7890\U0000202c";

NSString *extractedString = [[numString componentsSeparatedByCharactersInSet:
                        [[NSCharacterSet decimalDigitCharacterSet] invertedSet]]
                       componentsJoinedByString:@""];

// extractedString = 1234567890

除非我尝试为该路线生成网址,否则一切正常。主叫:

@app.route("/")
@app.route("/page=<int:number")
def index(number=0):
    return "Index Page: {}".format(number)

收益率:domain.tld:80 /页%3D10

有没有办法绕过这个问题?当它被内置到路线本身时,我想要'='而不是'%3D'。

我只是注意到当我在一个断言中测试它时发生这种情况并发现路线最终与我预期的不同。

目前,我的测试用例通过使用urllib.parse.unquote修复网址以进行测试来解决问题。我可能只是对所有网址都这样做,因为我不会有任何用户输入来担心导致问题的那些..但它有一个原因所以....:P

1 个答案:

答案 0 :(得分:0)

您拥有的一个选项是不将参数构建到路径本身,而是使用查询参数:

from flask import Flask, render_template, request, url_for

app = Flask(__name__)

@app.route("/")
def index():
    page = request.args.get('page', 0, type=int)
    print(url_for("index", page=10)) # yields /?page=10
    return "Index Page: {}".format(page)

app.run(debug=True)

我使用路径的查询参数,避免了Flask在路径定义中编码=符号的问题。