我想在使用Flask重定向之前驗證url。如何驗證網址和使用燒瓶重定向到一些URL
我的抽象的代碼是在這裏...
@app.before_request
def before():
if request.before_url == "http://127.0.0.0:8000":
return redirect("http://127.0.0.1:5000")
你有什麼想法? 在此先感謝。
我想在使用Flask重定向之前驗證url。如何驗證網址和使用燒瓶重定向到一些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 (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(使用相同的庫)與正確的端口或路徑。這將保持你的url的完整性,而不是處理字符串操作。
感謝您的有用答案! – nobinobiru
你可以做這樣的事情(未測試):
@app.route('/<path>')
def redirection(path):
if path == '': # your condition
return redirect('redirect URL')
您可以使用urlparse from urllib解析url。下面的函數檢查解析url後發現的scheme
,netloc
和path
變量。支持Python 2和3.
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
驗證您可能想要使用正則表達式查看的URL。這可能會有所幫助: http://stackoverflow.com/questions/827557/how-do-you-validate-a-url-with-a-regular-expression-in-python – petermlm