Django es un marco de desarrollo web de primer nivel escrito en Python que promueve un desarrollo rápido, un diseño limpio y un enfoque pragmático. Uno de los aspectos más importantes del desarrollo web es el manejo de formularios. En ese contexto, centrémonos en la Sección 19.4: Formularios en Django.
Los formularios son una parte esencial de cualquier aplicación web. Son la interfaz principal para la entrada del usuario, lo que les permite ingresar datos que luego la aplicación puede usar para realizar una variedad de tareas. En Django, los formularios son manejados por una biblioteca de formularios integrada.
Creando una aplicación Django
Para comenzar, necesitamos crear una nueva aplicación Django. Supongamos que el nombre de nuestra aplicación es 'myapp'. Para crear esta aplicación, usamos el comando:
python administrar.py startapp miaplicación
A continuación, debemos agregar 'myapp' a la lista de INSTALLED_APPS en nuestro archivo settings.py para que Django sepa que existe.
Formularios en Django
Django proporciona varias formas de crear formularios. La forma más común es utilizar la clase Formulario. Una clase de formulario es simplemente una forma de definir campos de formulario. Cada campo de formulario tiene un tipo de campo específico: CharField para campos de entrada de texto, DateTimeField para entradas de fecha y hora, etc.
Por ejemplo, podemos crear un formulario simple para un sistema de comentarios de la siguiente manera:
desde formularios de importación de Django formulario de comentario de clase (formularios.formulario): nombre = formularios.CharField(max_length=100) comentario = formularios.CharField(widget=formularios.Textarea)
Este es un formulario muy básico con dos campos: un campo de entrada de texto para el nombre y un área de texto para el comentario. Django maneja automáticamente la representación de estos campos como HTML, valida la entrada del usuario y convierte la entrada del usuario a tipos de datos de Python.
Usar formularios en vistas
Después de definir un formulario, podemos usarlo en una vista. Una vista es simplemente una función de Python que recibe una solicitud web y devuelve una respuesta. En Django, podemos usar la función render() para renderizar una plantilla HTML con un contexto determinado. El contexto es un diccionario que asigna nombres de variables a valores de Python.
Por ejemplo, aquí hay una vista que muestra nuestro formulario CommentForm:
desde django.shortcuts importar render desde .forms importar formulario de comentario comentario def (solicitud): formulario = Formulario de comentario() devolver render(solicitud, 'comentario.html', {'formulario': formulario})
Esta vista simplemente crea una nueva instancia de nuestro CommentForm y la pasa a la plantilla 'comment.html' bajo el nombre 'formulario'.
Manejo del envío de formularios
Cuando un usuario envía un formulario, necesitamos procesar los datos del formulario. Django hace esto fácil con el método is_valid(). Este método verifica que los datos del formulario sean válidos, que todos los campos se hayan completado correctamente y que los datos pasen todas las validaciones definidas.
Si el formulario es válido, podemos acceder a los datos del formulario limpio a través del atributo clean_data, que es un diccionario que asigna nombres de campos a valores de campos limpios.
Por ejemplo, aquí hay una vista que procesa nuestro envío de CommentForm:
desde django.shortcuts importar render, redirigir desde .forms importar formulario de comentario comentario def (solicitud): si solicitud.método == 'POST': formulario = Formulario de comentario (solicitud.POST) si form.is_valid(): # procesar los datos en form.cleaned_data #... devolver redirección ('éxito') demás: formulario = Formulario de comentario() devolver render(solicitud, 'comentario.html', {'formulario': formulario})
Esta vista primero verifica si la solicitud es una POST. Si es así, crea una nueva instancia de CommentForm a partir de los datos POST, verifica que el formulario sea válido y luego procesa los datos. Si la solicitud no es una POST, la vista simplemente muestra el formulario como antes.
Conclusión
Los formularios son una parte esencial del desarrollo web y Django proporciona una forma poderosa y flexible de trabajar con ellos. Con la biblioteca de formularios de Django, podemos definir formularios de forma declarativa, procesar envíos de formularios con facilidad y reutilizar formularios comunes en toda nuestra aplicación.