Formulario de Contacto y envío de emails con Django
Formulario de Contacto y envío de emails con Django

En este tutorial vamos a empezar a ver como trabajar con formularios y modelos en django, los he integrado en el mismo post porque realmente en django van de la mano, los formularios se pueden crear a través de un modelo, y un modelo representa una tabla de nuestra base de datos. Entonces, si tenemos el modelo Post con los campos id, title, content, podemos crear un formulario basándonos en esos campos menos la id, que es un campo que se genera automáticamente.

De esta forma, aparte de ver como crear, enviar y validar formularios, veremos como crear modelos y así, de poco a poco, nos vamos haciendo más con Django.

Formularios y modelos en Django

Lo primero que debemos hacer es crear un nuevo proyecto, le podemos llamar forms, así que nos ponemos donde queremos que sea creado el proyecto y desde la terminal escribimos lo siguiente.

Accedemos a nuestro proyecto

Y creamos una nueva aplicación a la que podemos llamar blog, por ejemplo

Ahora podemos establecer las configuraciones de siempre en nuestro archivo settings, así que lo abrimos y modificamos lo siguiente.

La configuración de la base de datos no necesitamos modificarla porque el ejemplo lo haremos con sqlite3, que es el que viene por defecto, más adelante haremos uso de mysql.

Si tienes dudas con alguno de los pasos anteriores, te recomiendo que veas este tutorial.

Ahora debemos crear en el archivo urls.py la nueva url desde la que accederemos a nuestro formulario, así que abre el archivo urls.py y añade la siguiente línea debajo de la ruta del admin.

Creamos la ruta add_post, que obedecerá a la función en blog/views.py llamada create_post y tendrá como alias add_post, como veremos, esto último será útil para hacer las redirecciones.

Ahora vamos a crear el modelo post, así que abre el archivo blog/models.py y añade el siguiente código.

Como podemos ver, una representación de un post sencillo, sencillo de entender.

Para que las tablas de nuestra base de datos sean creadas ejecuta el siguiente comando desde la terminal.

Ahora debes crear un nuevo archivo dentro de blog llamado forms.py, aquí será donde creemos nuestro formulario, que como veremos tendrá los tres campos que tiene nuestro modelo.

Perfecto, tenemos un modelo que es capaz de crear nuevos posts en nuestra base de datos y un formulario que podemos imprimir y nos mostrará los 3 campos que tenemos en el modelo, ahora debemos crear una función en la vista del blog llamada create_post como le hemos dicho al archivo urls y dentro crear la lógica para mostrar o procesar nuestro formulario, así que abre el archivo blog/views.py y añade el siguiente código.

Lo único que no he comentado y es muy importante es el último parámetro pasado a render_to_response, es necesario para poder agregar un token al formulario y así evitar ataques csrf.

Ahora crea nuestra plantilla crear_post.html en el directorio templates en la raíz del proyecto, si no has creado el directorio hazlo y añade dentro del archivo el siguiente código.

O si quieres algo menos manipulable puedes hacer algo tan sencillo como lo siguiente.

Las dos son igual de válidas, sólo que con la primera, podemos hacer más lo que queramos con nuestros formularios, y no simplemente mostrarlos.

Ahora es momento de encender el servidor, así que abre la terminal en el directorio del proyecto y escribe.

Accede a http://127.0.0.1:8000/add_post/ y si todo va bien deberás ver el formulario, si no tienes un gestor de sqlite3 te recomiendo que descargues este.

Crea un nuevo post, y si todo va bien, verás de nuevo el formulario limpio y en la base de datos debes tener un nuevo post.

Espero que te funcione y cualquier duda referente al post comenta, un saludo.