2

我想在使用 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")

你有什么主意吗?提前致谢。

4

3 回答 3

6

使用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 的完整性,而不是处理字符串操作。

于 2013-08-25T00:31:16.053 回答
1

您可以使用urllib中的urlparse来解析 url。下面的函数检查,和解析 url 后的变量。支持 Python 2 和 3。schemenetlocpath

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
于 2017-12-07T11:57:53.810 回答
-2

你可以做这样的事情(未经测试):

@app.route('/<path>')
def redirection(path):
    if path == '':    # your condition
        return redirect('redirect URL')
于 2013-08-24T23:21:25.903 回答