I'm using the helper function which is recommended here: http://flask.pocoo.org/docs/reqcontext/
def redirect_url(default='index'):
return request.args.get('next') or
request.referrer or
url_for(default)
Use it in in the view
def some_view():
# some action
return redirect(redirect_url())
Without any parameters it will redirect the user back to where he came from (request.referrer
).
You can add the get parameter next
to specify a url. This is useful for oauth for example.
instagram.authorize(callback=url_for(".oauth_authorized",
next=redirect_url(),
_external=True))
I also added a default view if there should be no referrer for some reason
redirect_url('.another_view')
The snippet you linked basically does the same but more secure by ensuring you cannot get redirected to a malicious attacker's page on another host.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…