我想在使用 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")
你有什么主意吗?提前致谢。
使用urlparse(内置模块)。然后,使用内置的烧瓶重定向方法
>>> 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(使用相同的库)。这将保持 URL 的完整性,而不是处理字符串操作。
您可以使用urllib中的urlparse来解析 url。下面的函数检查,和解析 url 后的变量。支持 Python 2 和 3。scheme
netloc
path
try:
# python 3
from urllib.parse import urlparse
except ImportError:
from urlparse import urlparse
def url_validator(url):
try:
result = urlparse(url)
return all([result.scheme, result.netloc, result.path])
except:
return False
你可以做这样的事情(未经测试):
@app.route('/<path>')
def redirection(path):
if path == '': # your condition
return redirect('redirect URL')