Читать книгу Django 2 - Antonio Melé - Страница 45
Crear formularios en Django
ОглавлениеA continuación, se describe cómo elaborar un formulario para compartir artículos. Django tiene un sistema de formularios con el que crear formularios web de una manera sencilla. Este sistema permite definir los campos del formulario, el modo en que se visualizan y la forma de validación de la entrada de datos. Con este sistema, Django ofrece una forma sencilla y flexible de visualizar formularios y gestionar datos.
Django incluye dos clases base para la elaboración de formularios:
• Form, que permite construir un formulario estándar.
• ModelForm, que permite construir un formulario a partir de una instancia de modelo de datos.
Primero cree el fichero forms.py dentro del directorio blog de la aplicación con el siguiente contenido:
Este es el primer formulario de Django. La clase que ha creado hereda de la clase base Form, donde se definen diferentes atributos con tipos específicos, encargados de la validación de los campos.
Los formularios pueden declararse en cualquier lugar de un proyecto Django. Por convención, el lugar definido para ellos es el fichero forms.py de cada aplicación.
El tipo del campo name es CharField. Este tipo de campo se renderiza como <input type=”text”> en código HTML. Cada tipo de campo tiene una representación HTML (o widget) asociada, que puede ser redefinida a través del parámetro widget. En el caso del campo comments, el widget definido es de tipo Textarea que quedará renderizado como <textarea> en HTML en lugar de <input>.
La validación de campos depende del tipo de campo definido. Por ejemplo, los campos email y to son campos del tipo EmailField. Ambos campos requieren una dirección válida de correo electrónico; en caso contrario, la validación de campos provocará una excepción de tipo forms.ValidationError y el formulario no podrá ser validado. Otros parámetros se tienen en cuenta a la hora de realizar la validación: hay un número máximo de caracteres definidos en el campo name, y también se especifica que el campo comments no es obligatorio. Todos estos parámetros se tienen en cuenta a la hora de realizar las validaciones. El tipo de campos que ha usado son solo una pequeña muestra de los que Django dispone. Puede encontrar información sobre todos los campos de formulario disponibles en https://docs.djangoproject.com/en/2.0/ref/forms/fields/.