所以..我在使用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
答案 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在路径定义中编码=
符号的问题。