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