- Descripción del proyecto
- Tecnologías utilizadas
- Modelo de datos
- Rutas principales
- Instalación y ejecución
- Credenciales de prueba
- Evidencias
- Estructura del proyecto
- Repositorio
- Autor
Entregar la versión final del e-commerce integrando lo desarrollado en módulos anteriores y dejándolo listo para portafolio: aplicación ejecutable en local, flujo principal completo, y documentación clara en GitHub.
- Python 3.14
- Django 6.0.6
- PostgreSQL
- Bootstrap 5
- Bootstrap Icons
- psycopg2-binary
- Pillow
- python-dotenv
- HTML
- CSS
- Git y GitHub
| Campo | Tipo | Descripción |
|---|---|---|
| id | BigAutoField | Identificador automático |
| nombre | CharField | Nombre único de la categoría |
| descripcion | TextField | Descripción opcional |
| disponible | BooleanField | Estado de disponibilidad |
| Campo | Tipo | Descripción |
|---|---|---|
| id | BigAutoField | Identificador automático |
| nombre | CharField | Nombre del producto |
| descripcion | TextField | Descripción detallada |
| precio | DecimalField | Precio del producto |
| stock | PositiveIntegerField | Cantidad disponible |
| categoria | ForeignKey | Relación con categoría |
| imagen | ImageField | Imagen del producto |
| disponible | BooleanField | Estado de disponibilidad |
| creado | DateTimeField | Fecha de creación |
| actualizado | DateTimeField | Fecha de actualización |
| Campo | Tipo | Descripción |
|---|---|---|
| id | BigAutoField | Identificador automático |
| usuario | ForeignKey | Usuario que realiza la compra |
| fecha | DateTimeField | Fecha del pedido |
| total | DecimalField | Total final del pedido |
| Campo | Tipo | Descripción |
|---|---|---|
| id | BigAutoField | Identificador automático |
| pedido | ForeignKey | Pedido relacionado |
| producto | ForeignKey | Producto comprado |
| cantidad | PositiveIntegerField | Cantidad comprada |
| precio_unitario | DecimalField | Precio al momento de comprar |
| subtotal | DecimalField | Subtotal del producto |
| Ruta | Descripción |
|---|---|
/ |
Home |
/productos/ |
Listado de productos disponibles |
/producto/<id>/ |
Detalle de un producto |
/login/ |
Inicio de sesión |
/logout/ |
Cierre de sesión |
| Ruta | Descripción |
|---|---|
/carrito/ |
Ver carrito |
/carrito/agregar/<id>/ |
Agregar producto al carrito |
/carrito/aumentar/<id>/ |
Aumentar cantidad |
/carrito/disminuir/<id>/ |
Disminuir cantidad |
/carrito/eliminar/<id>/ |
Quitar producto del carrito |
/carrito/vaciar/ |
Vaciar carrito |
/pedido/resumen/ |
Resumen previo a confirmar compra |
/confirmar/ |
Confirmar compra (crea el pedido) |
/mis-pedidos/ |
Historial de pedidos del usuario |
| Ruta | Descripción |
|---|---|
/dashboard/productos/ |
Panel de administración de productos |
/dashboard/productos/crear/ |
Crear producto |
/dashboard/productos/editar/<id>/ |
Editar producto |
/dashboard/productos/eliminar/<id>/ |
Eliminar producto |
/admin/ |
Django Admin nativo |
- Python 3.10 o superior.
- PostgreSQL instalado y en ejecución.
- pip.
- Git.
git clone https://github.com/JCarvajalLab/Modulo-8-E-commerce-ProyectoFinal.git
cd Modulo-8-E-commerce-ProyectoFinalpython -m venv venv
venv\Scripts\activatepip install -r requirements.txtEjemplo:
CREATE USER ecommerce_user
WITH PASSWORD 'ClaveSegura.2026#';
CREATE DATABASE ecommerce_db
OWNER ecommerce_user;
GRANT ALL PRIVILEGES
ON DATABASE ecommerce_db
TO ecommerce_user;
-- Nos conectamos a la base de dato "ecommerce_db" y agregamos el siguiente comando
ALTER SCHEMA public OWNER TO ecommerce_user;Crea un archivo llamado .env en la raíz del proyecto usando .env.example como referencia.
Ejemplo:
SECRET_KEY=colocar_secret_key
DEBUG=True
DB_NAME=ecommerce_db
DB_USER=ecommerce_user
DB_PASSWORD=ClaveSegura.2026#
DB_HOST=localhost
DB_PORT=5432Puedes generar una clave segura ejecutando:
python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"El archivo .env no debe subirse a GitHub porque contiene información sensible.
python manage.py migrateEjecuta este script para crear automáticamente un usuario administrador y un usuario cliente (si ya existen, el script solo lo indica y no hace nada):
python crear_usuarios.pyEsto crea:
admin/Admin12345!→ superusuario, con acceso al panel de productos y a Django Admin.cliente/Cliente12345!→ usuario normal, con acceso al catálogo, carrito y pedidos.
python manage.py runserverLuego abrir:
http://127.0.0.1:8000/
| Campo | Valor |
|---|---|
| Usuario | admin |
| Contraseña | Admin12345! |
| Acceso | Panel de productos y Django Admin |
| Campo | Valor |
|---|---|
| Usuario | cliente |
| Contraseña | Cliente12345! |
| Acceso | Catálogo, carrito, compra e historial de pedidos |
Estas credenciales son solo para fines de prueba y demostración local.
└── 📁ecommerce_portafolio
└── 📁carrito
└── 📁migrations
├── __init__.py
└── 📁templates
└── 📁carrito
├── ver_carrito.html
├── __init__.py
├── admin.py
├── apps.py
├── carrito.py
├── models.py
├── tests.py
├── urls.py
├── views.py
└── 📁config
├── __init__.py
├── asgi.py
├── settings.py
├── urls.py
├── wsgi.py
└── 📁media
└── 📁productos
└── 📁pedidos
└── 📁migrations
├── __init__.py
├── 0001_initial.py
└── 📁templates
└── 📁pedidos
├── confirmar_pedido.html
├── mis_pedidos.html
├── __init__.py
├── admin.py
├── apps.py
├── models.py
├── tests.py
├── urls.py
├── views.py
└── 📁productos
└── 📁migrations
├── __init__.py
├── 0001_initial.py
├── 0002_producto.py
├── 0003_rename_categoria_producto_categoria.py
└── 📁static
└── 📁productos
└── 📁css
└── 📁images
└── 📁js
└── 📁templates
└── 📁productos
├── confirmar_eliminar.html
├── detalle_producto.html
├── formulario_producto.html
├── home.html
├── lista_productos.html
├── panel_productos.html
├── __init__.py
├── admin.py
├── apps.py
├── forms.py
├── models.py
├── tests.py
├── urls.py
├── views.py
└── 📁static
└── 📁css
├── style.css
└── 📁images
├── image-1.png
├── image-2.png
├── image-3.png
├── image-4.png
├── image-5.png
├── image-6.png
├── image-7.png
├── image-8.png
├── image.png
└── 📁js
└── 📁templates
└── 📁includes
├── footer.html
├── navbar.html
├── base.html
└── 📁usuarios
└── 📁migrations
├── __init__.py
└── 📁templates
└── 📁usuarios
├── login.html
├── __init__.py
├── admin.py
├── apps.py
├── forms.py
├── models.py
├── tests.py
├── urls.py
├── views.py
├── .env.example
├── .gitignore
├── crear_usuarios.py
├── manage.py
├── README.md
└── requirements.txt
Actividad Final - Modulo 8 - Desarrollo Portafolio
Alumno: Jordan Carvajal - Fecha: 04-07-2026








