Práctica Formularios¶
1. Introducción¶
Vamos a crear una práctica para hilar todo lo visto sobre formularios en los temas anteriores. En este tema sí que ya guardaremos la información que se envíe a través del formulario en la base de datos.
Para ello vamos a crear un nuevo proyecto ecommerce y una aplicación stock donde crearemos un modelo Product y un formulario para añadir productos a la base de datos.
2. Crear el proyecto y la aplicación¶
Vamos a crear primero la carpeta que contendrá el proyecto y el entorno virtual:
mkdir ecommerce
cd ecommerce
python3 -m venv venv
source venv/bin/activate # En Windows usa `venv\Scripts\activate`
Instalamos Django en el entorno virtual:
pip install django
Ahora sí creamos el proyecto y la aplicación:
django-admin startproject ecommerce .
python manage.py startapp stock
Modificamos settings.py:
- Añadimos
stockaINSTALLED_APPS. - configuramos
templatespara que busque en una carpetatemplatesen la raíz del proyecto. - configramos
staticpara que sirva los archivos estáticos desde una carpetastaticen la raíz del proyecto.
Hacemos la migración inicial:
python manage.py migrate
Hacemos un check para asegurarnos de que todo está correcto:
python manage.py check
Por último levantamos el servidor de desarrollo para comprobar que todo funciona:
python manage.py runserver
Debemos ver la página de bienvenida de Django en:
http://localhost:8000/
Página de bienvenida de Django

3. Configuración de la aplicación¶
Comenzamos por delegar la URL raíz del proyecto a la aplicación stock. Modificamos ecommerce/urls.py:
| urls.py | |
|---|---|
1 2 3 4 5 6 7 | |
Ahora añadimos las rutas a la aplicación, creamos el archivo stock/urls.py:
| docs/M6/doc_6.4.md | |
|---|---|
1 2 3 4 5 6 7 8 | |
Ahora vamos a modificar views.py para que la vista index renderice una plantilla index.html que crearemos en el siguiente paso:
| views.py | |
|---|---|
1 2 3 4 5 6 | |
Creamos la carpeta templates en la raíz del proyecto y dentro de ella el archivo index.html, dejamos el archivo preparado para añadir el formulario más adelante:
| templates/stock/index.html | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
Ahora comprobamos que todo sigue funcionando levantando el servidor de desarrollo:
python manage.py runserver
Debemos ver la página con el título "Añadir Producto":
http://localhost:8000/
Página de bienvenida de Django

4. Crear el modelo¶
Vamos a crear el modelo Product en stock/models.py:
| stock/models.py | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 | |
Y ahora sobre este modelo vamos a crear el formulario. Para ello en el fichero stock/forms.py creamos el formulario ProductForm:
| stock/forms.py | |
|---|---|
1 2 3 4 5 6 7 8 | |
Modificamos la vista index en stock/views.py para que utilice el formulario y guarde los datos en la base de datos:
| stock/views.py | |
|---|---|
1 2 3 4 5 6 7 8 | |
Ahora ya podemos mostrar en el template el formulario que hemos creado. Modificamos templates/stock/index.html:
| templates/stock/index.html | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
Ahora preparamos la vista para cuando reciba una petición POST con los datos del formulario:
| stock/views.py | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
python manage.py makemigrations
python manage.py migrate
Ahora sí, levantamos el servidor de desarrollo:
python manage.py runserver
http://localhost:8000/
Probamos a dar de alta un producto y revisamos que efectivamente se ha guardado en la base de datos.
Formulario y alta de producto

5. Resumen¶
En esta práctica hemos visto cómo crear un proyecto y una aplicación en Django, cómo definir un modelo, crear un formulario basado en ese modelo y manejar la lógica para guardar los datos enviados a través del formulario en la base de datos.