######### libs.py ####################################
# This gives you the extra functionality you'll need 
######################################################
from django.contrib.formtools.wizard import FormWizard

class FormWizardSnip(FormWizard):
    def __init__(self, context):
        # Override the extra context
        self.extra_context = context

        # Call the original init
        super(FormWizardSnip, self).__init__(self._forms)

    def __call__(self, request):
        return super(FormWizardSnip, self).__call__(request)

def render_to_wizard(f, request, context):
    c = f(context=context)
    return c(request)

######## forms.py ####################################
# This is the place where the forms go
######################################################

from django import forms
from django.shortcuts import render_to_response
from webapp.libs import FormWizardSnip
from django.template import RequestContext

class testform_step1(forms.Form):
    subject = forms.CharField(max_length=100)
    sender = forms.EmailField()

class testform_step2(forms.Form):
    message = forms.CharField(widget=forms.Textarea)

class testform( FormWizardSnip ):
    # We define the form list here, rather than in the __init__() call. MUCH nicer!!!
    _forms = [CreateNewGateway_step1, CreateNewGateway_step2]

    def get_template(self, step):
        return 'wizard_step%s.html' % step

    def done(self, request, form_list):
        # Compile extra content
        o = self.extra_context
        o['form_data'] = [form.cleaned_data for form in form_list]
        
        # Build the request context
        context = RequestContext(request, o)

        return render_to_response('wizard_done.html', context_instance=context)

######## views.py ####################################
# This is the view function which your urls.py has hit
######################################################
from libs import render_to_wizard
from forms import testform

def test(request):
    # perform your application logic here (user testing etc)

    # Build the request context (this can be used by your overall site templates etc)
    context = {
        'templateOptions'       :   'etc etc'
    }

    # Call the correct parent function with the correct context
    return render_to_wizard(testform, context=context, request=request)



Thats it! I hope this helps someone!