Читать книгу Django 2 - Antonio Melé - Страница 46
Usar formularios en vistas
ОглавлениеAhora va a crear una nueva vista que gestione el formulario y el envío de email, siempre y cuando contenga información válida. Para ello editará el fichero views.py de la aplicación blog y añadirá el siguiente contenido:
Esta vista funciona del siguiente modo:
• Se define una vista llamada post_share que recibe un objeto request y un parámetro post_id.
• Haciendo uso del atajo get_object_or_404() se recupera el artículo por identificador y por estado published.
• Usará la misma vista para visualizar el formulario inicial y procesar la información enviada. Se identifica si el formulario ha sido enviado mediante el atributo method del objeto request. El formulario se envía por el método POST. Si se recibe una solicitud GET, se genera un formulario vacío. Si se recibe una petición POST, se debe procesar la información del formulario. Por este motivo, utilizará la sentencia condicional request.method == 'POST' para distinguir entre ambos escenarios.
Los siguientes pasos corresponden al procesamiento del formulario:
1. Cuando la vista se carga inicialmente con una solicitud GET, se crea una nueva instancia de formulario que se mostrará vacía en la plantilla HTML.
2. El usuario rellena el formulario y lo envía por método POST. En ese momento, se crea una instancia de formulario con los datos enviados contenidos en request.POST:
3. Después de esto se validan los datos enviados usando el método is_valid() del formulario. Este método validará la información introducida en el formulario y devolverá True si todos los campos contienen datos válidos. Si al menos uno de los campos no hubiera podido validarse, el método devolverá False. A partir de entonces, la lista de errores de validación estará accesible en form.errors.
4. Si el formulario no es válido, se renderizará la plantilla de nuevo, con la información enviada, mostrando un mensaje de error en las validaciones que hubiesen fallado.
5. Si el formulario es válido, se recuperarán los datos validados a través de form.claened_data. Este atributo es de tipo diccionario, donde las claves son los nombres de los campos del formulario.
Si el formulario no es válido, cleaned_data solo contendrá los campos válidos.
A continuación se describe cómo se envían correos electrónicos con Django para completar la funcionalidad.