A wizard that helps to control page flow.
Django wizard uses Step classes to control page flow.
To create a wizard, you need a url route defined that is going to point to a view and take a step parameter, like this:
url(r'^(?P<step>[a-zA-Z]+)?$', views.my_view, name='new_wizard'),
That view then must instantiate the wizard passing it the url name, and a list of steps. Then the wizard’s handle_request method should be called and returned with the request and the current step name (From the url):
def my_view(request, step): Wizard('new_wizard', [ ('StepOne', mysteps.StepOne), ('StepTwo', mysteps.StepTwo), ]) return wizard.handle_request(request, step)
The wizard also has a defaulted navigation_opts argument that can be passed in the __init__ navigation options are a dictionary with a key of a string that will map to a field in the Request, and the value is an int. These tell the wizard what direction to go and how far in which scenarios.
The defaults are:
- wizard_save: 0
- wizard_continue: 1
- wizard_previous: -1
- wizard_next: 1
The view can also set a few additional things on the wizard:
- set_redirect_args(*args, **kwargs)
- use this to tell the wizard what it needs to privode to django’s reverse function when doing redirects
- set_step_init_args(*args, **kwargs)
- use this to supply additional arguments to your step class __init__’s
- use this to add stuff that will always be available in all of your wizard created templates
The wizard will trigger the following signals:
A Step class is just an object that must define the following methods