Estoy tratando de crear un formulario simple de varias páginas de Django usando FormWizard. Lo que el formulario debe hacer es lo siguiente:Obtener información previamente ingresada en Django FormWizard
- Deje que el visitante ingrese el nombre y el apellido en un formulario.
- Continúa en la página siguiente donde se ingresaron previamente se muestran el nombre y el apellido, también habrá un campo en esta página que permite al visitante ingresar un mensaje.
- El visor se llevará a la página Django done.html donde se almacenará y se mostrará toda la información.
En el paso 2, tengo problemas para encontrar la información que el visitante ingresó en el paso 1. Estoy publicando el código de los formularios y las dos plantillas utilizadas para los pasos 1 y 2 a continuación :
forms.py
from django import forms
from django.shortcuts import render_to_response
from django.contrib.formtools.wizard import FormWizard
class ContactWizard(FormWizard):
def done(self, request, form_list):
return render_to_response('done.html', {
'form_data': [form.cleaned_data for form in form_list],
})
def get_template(self, step):
return 'buydomain/templates/reg%s.html' % step
class Form1(forms.Form):
firstName = forms.CharField()
lastName = forms.CharField()
class Form2(forms.Form):
message = forms.CharField(widget=forms.Textarea)
plantilla para la etapa 1:
{% block content %}
<p>Step {{ step }} of {{ step_count }}</p>
<form action="." method="post">
<table>
{{ form }}
</table>
<input type="hidden" name="{{ step_field }}" value="{{ step0 }}" />
{{ previous_fields|safe }}
<input type="submit">
</form>
{% endblock %}
plantilla para el paso 2:
{% block content %}
<p>Step {{ step }} of {{ step_count }}</p>
{% comment %}
Show values entered into Form1 here !
{% endcomment %}
<form action="." method="post">
<table>
{{ form }}
</table>
<input type="hidden" name="{{ step_field }}" value="{{ step0 }}" />
{{ previous_fields|safe }}
<input type="submit">
</form>
{% endblock %}
Pido disculpas si no tengo claro qué es lo que quiero lograr, y espero que alguien me proporcione una solución. Gracias por adelantado.
¿Cómo funciona el posterior acceso clase de formulario los datos extra_context? – BozoJoe
'extra_context' se pasa por' FormWizard' a la plantilla para la representación. –
Aún he votado a favor esta respuesta, pero quería informar a otros que a partir de django 1.4, la firma del método process_step cambió para pasar solo en el objeto de formulario. Como dijo @bpoetz, siéntese con los documentos y léalos para encontrar una solución que funcione con sus necesidades. – avelis