# -*- coding: utf-8 -*- # # Copyright (c) 2009 Arthur Furlan # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # On Debian systems, you can find the full text of the license in # /usr/share/common-licenses/GPL-2 import re def get_referer_view(request, default=None): ''' Return the referer view of the current request Example: def some_view(request): ... referer_view = get_referer_view(request) return HttpResponseRedirect(referer_view, '/accounts/login/') ''' # if the user typed the url directly in the browser's address bar referer = request.META.get('HTTP_REFERER') if not referer: return default # remove the protocol and split the url at the slashes referer = re.sub('^https?:\/\/', '', referer).split('/') if referer[0] != request.META.get('SERVER_NAME'): return default # add the slash at the relative path's view and finished referer = u'/' + u'/'.join(referer[1:]) return referer