class RequestStackMiddleware(object): ''' Keeps track of the last 3 succesful requests ''' def process_response(self, request, response): if 'requeststack' not in request.session: request.session['requeststack'] = ['/', '/', request.path] else: if request.method == 'GET' and 'text/html' in response.headers['Content-Type']: stack = request.session['requeststack'] stack = stack[1:] # remove the first item stack.append(request.path) request.session['requeststack'] = stack return response In a view: return HttpResponseRedirect(request.session['requeststack'][-1]) # or -2 or -3