I'm trying to use the formwizard in formtools package with no success (I was able to do it when the package was inside Django in earlier versions).
The only response I got is:
[23/Jan/2016 11:06:50]"GET /registration/wizard HTTP/1.1" 200 13729
and a blank page. No errors in browser or Eclipse console.
There's no way of googling without errors. Please help.
Thanks in advance
(If you guys find more comfortable stackoverflow, you can go to http://stackoverflow.com/q/34962499/1241715)
What did I do?
Firstly, I installed the formtools package with pip:
django-formtools==1.0
Django==1.8.3
Following the instructions of the official docs:
- Define form classes
registration/forms.py
class StepForm1(forms.Form):
first_field = forms.CharField(max_length=100)
second_field = forms.CharField()
class StepForm2(forms.Form):
message = forms.CharField(widget=forms.Textarea) - Create WizardView
registration/views.py
TEST_TEMPLATES = {"test_step_1": "registration/test_step1.html", "test_step_2": "registration/test_step2.html", }
from formtools.wizard.views import SessionWizardView
class WizardTest(SessionWizardView):
template_name = 'registration/test_wizard.html'
# Return templates for each step
def get_templates_name(self):
return [TEST_TEMPLATES[self.steps.current]]
# Method called when all is done
def done(self, form_list, **kwargs):
# return HttpResponseRedirect('/url-to-redirect-to/')
# We return the final template with the info
return render_to_response('test_done.html', {
'form_data':[form.cleaned_data for form in form_list],
})
# THESE METHODS BELOW ARE NOT NEEDED, BUT COMMENTED FOR FUTURE USE
# Not strictly needed. Returns data for a step
# or None if form is not valid
# def get_cleaned_data_for_step(self, step):
#return None
# Form data postprocessing in a concrete wizard step
# def process_step(self, form):
#return self.get_form_step_data(form)
# Handles value from a step before storing them into wizard
# def get_form_step_data(self, form):
#return form.data - Create the templates
registration/test_step1.html
<h1>Two fields form</h1>
<input id="first_field" name="first_field">
<input id="second_field" name="second_field">
registration/test_step2.html
<h1>Message form</h1>
<input id="message" name="message">
registration/test_wizard.html
{% extends "person/alumnos.html" %}
{% load i18n %}
{% block head %}
{{ wizard.form.media }}
{% endblock head %}
{% block content %}
<p>{% trans "Step {{wizard.steps.step1}} of {{wizard.steps.count}}" %}</p>
<form action="" method="post">
{% csrf_token %}
{{ wizard.management_form }}
{% if wizard.form.forms %}
{{ wizard.form.management_form }}
{% for form in wizard.form.forms %}
{{form}}
{% endfor %}
{% else %}
{{ wizard.form }}
{% endif %}
{% if wizard.steps.prev %}
<button name="wizard_goto_step" type="submit" value="{{ wizard.steps.first }}">{% trans "Beginning" %}</button>
<button name="wizard_goto_step" type="submit" value="{{ wizard.steps.prev }}">{% trans "Previous step" %}</button>
{% endif %}
<input type="submit" value="submit"/>
</form>
{% endblock %} - Add 'formtools' to my INSTALLED_APPS
settings.py
DJANGO_APPS = (
# Default Django apps:
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'formtools', # <===== HERE
# Useful template tags:
# 'django.contrib.humanize',
# Admin panel and documentation:
'django.contrib.admin',
# 'django.contrib.admindocs',
)
# Apps specific for this project go here.
LOCAL_APPS = (
'person',
'registration',
'teaching',
'utils',
)
# See: https://docs.djangoproject.com/en/dev/ref/settings/#installed-apps
INSTALLED_APPS = DJANGO_APPS + LOCAL_APPS - Point my URLconf at your WizardView as_view() method.
registration/urls.py
from registration.forms import StepForm1, StepForm2
TEST_FORMS = [("test_step_1", StepForm1), ("test_step_2", StepForm2), ]
from registration.views import WizardTest
# I tried in two ways, none of them worked
urlpatterns = patterns('',
url(r'^wizard$', WizardTest.as_view(TEST_FORMS), name='wizard_test'),
url(r'^wizard2$', views.wizard, name='wizard_test'),
)
For the second way...
registration/views.py
def wizard(request):
return WizardTest.as_view(TEST_FORMS)(request)
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/333f094e-3b3f-4235-b3df-1b5d76c3004f%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment