我想在使用Flask重定向之前验证url。
我的抽象代码在这里......
@app.before_request
def before():
if request.before_url == "http://127.0.0.0:8000":
return redirect("http://127.0.0.1:5000")
你知道吗?
提前谢谢。
答案 0 :(得分:4)
使用urlparse (builtin module)。然后,使用内置烧瓶redirection methods
>>> from urlparse import urlparse
>>> o = urlparse('http://www.cwi.nl:80/%7Eguido/Python.html')
>>> o
ParseResult(scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html',
params='', query='', fragment='')
>>> o.scheme
'http'
>>> o.port
80
>>> o.geturl()
'http://www.cwi.nl:80/%7Eguido/Python.html'
然后,您可以检查已解析的端口并使用正确的端口或路径重建URL(使用相同的库)。这将保持您网址的完整性,而不是处理字符串操作。
答案 1 :(得分:1)
您可以使用 urllib 中的 urlparse 来解析网址。下面的函数检查解析url后出现的@IBAction func start(_ sender: Any) {
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(W1ViewController.counter), userInfo: nil, repeats: true)
}
@IBOutlet weak var stopOutlet: UIButton!
@IBAction func stop(_ sender: Any) {
seconds = 30
label.text = "\(seconds)"
timer.invalidate()
audioPlayer.stop()
}
,scheme
和netloc
变量。支持Python 2和3。
path
答案 2 :(得分:0)
你可以这样做(未经测试):
@app.route('/<path>')
def redirection(path):
if path == '': # your condition
return redirect('redirect URL')