TechFinder es una tienda de tecnología creada con Django y SQLite, diseñada como una plataforma simple que implementa las funciones básicas de un sistema CRUD (Crear, Leer, Actualizar, Eliminar). Este proyecto permite la gestión de productos y usuarios dentro de una tienda virtual.
- Gestión de usuarios: Permite crear usuarios, editar sus datos, verlos y asignarles permisos.
- Gestión de productos: Permite añadir, editar, eliminar y ver productos disponibles en la tienda.
- Gestión y filtrado: Permite filtrar elementos del sitio web usando la barra lateral
- Carrito de compras: Da la posibilidad de añadir productos al carrito de compras y ver el total.
- Productos: Se incluyen dispositivos previamente cargados en la base de datos, pero puedes añadir más productos o eliminar los existentes según consideres necesario.
Para crear un usuario con permisos elevados (administrador), sigue los siguientes pasos:
-
Crea un usuario mediante el formulario estándar en la interfaz de administración.
-
Accede a la base de datos (SQLite) y cambia los siguientes parámetros en la tabla
auth_user:is_superuser: Asegúralo comoTrue.permissions: Establece el valor como1.is_active: Asegúralo comoTrue.is_staff: Asegúralo comoTrue.
Con estos valores configurados, tendrás un usuario con privilegios máximos.
Usuario de ejemplo con privilegios máximos:
- Correo:
[email protected] - Contraseña:
sivengahombre1
Puedes crear más usuarios con privilegios de administrador siguiendo los pasos anteriores.
-
Python: Se recomienda usar la última versión de Python. Yo estoy utilizando la versión
3.12.8.Si no tienes Python, puedes descargarlo desde https://www.python.org/downloads/.
-
Clona el repositorio (ó descarga el .zip y extraelo):
git clone https://github.com/universeneko/techfinder cd techfinder-websiteImportante: En la powershell es necesario habilitar la ejecución de scripts antes de proceder a ejecutar de los comandos de python.
Puedes hacerlo con los siguientes comandos:
Set-ExecutionPolicy RemoteSigned Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
-
Crea un entorno virtual en el directorio raíz del proyecto:
Haz
cdal directorio raizEn el directorio raiz del proyecto, donde están archivos cómo "requiriments.txt" ejecuta en la powershell los siguientes comandos:
python -m venv .venv
Este comando no muestra ningún mensaje, pero mientras no salte ningún error todo va bien.
Luego hay que ejecutar un segundo comando para habilitar el entorno virtual, dependiendo del sistema operativo hay que ejecutar un comando diferente.
Para Windows:
.venv\Scripts\activate
Para macOS/Linux:
source venv/bin/activate
-
Instala las dependencias:
Con el entorno virtual activado, ejecuta:
pip install -r requirements.txt
-
Ejecuta las migraciones: (Esto ya está hecho no se requiere este paso)
Si aún no se ha hecho, ejecuta:
python manage.py migrate
-
Ejecuta el servidor:
Para ejecutar el servidor, usa:
python manage.py runserver 0.0.0.0:8000
-
Se recomienda usar localhost o 0.0.0.0 para evitar problemas o configuraciones adicionales.
-
Puede usarse cualquier otro puerto pero en este caso se hará con el: 8000
-
Si se ejecuta el servidor en 0.0.0.0 se debe acceder a http://localhost:8000
-
Si deseas usar una IP personalizada, modifica el archivo
settings.pyy agrega tu IP en la variableALLOWED_HOSTS:ALLOWED_HOSTS = ['192.168.1.110', 'localhost']
Puedes configurar tu IP manualmente o dejarla en
localhostsi no deseas modificar nada más. -
- Carrito de compras: El carrito funciona correctamente cuando no se aplican filtros. Si aplicas filtros, el carrito no permite añadir productos debido a un error de lógica en el código.
Este es un proyecto simple de E-Commerce desarrollado con Django y SQLite, donde puedes gestionar productos y usuarios. Aunque tiene un error conocido, las funciones principales de añadir, editar y eliminar productos y usuarios están implementadas.
¡Disfruta usando el proyecto! Si necesitas agregar más dispositivos, puedes hacerlo desde la interfaz o directamente en la base de datos.
Para utilizar la API correctamente, es necesario contar con la última versión del proyecto. Se recomienda:
- Descargar los archivos actualizados.
- Eliminar la versión anterior o sobrescribir los archivos nuevos (instalación limpia).
- Ejecutar los comandos necesarios desde el paso 1 hasta el último para habilitar el servidor.
Una vez que el servidor esté en ejecución:
- La API está configurada por defecto en
http://192.168.1.110. - Si se ejecuta en otra IP, es necesario actualizar todas las URLs en los archivos de Bruno.
- Se recomienda configurar la IP del host como estática para evitar cambios frecuentes.
Bruno puede descargarse desde su sitio oficial.
- Versión portable: Ideal para pruebas rápidas.*
- Versión instalador: Recomendado para uso permanente.
*Se ha probado la versión portable con éxito.
- Abrir Bruno y dirigirse a la pestaña Collection.
- Hacer clic en Open Collection.
- Navegar hasta el directorio
/api/techfindery seleccionarlo. - Una vez importado, aparecerá un menú desplegable llamado techfinder, donde se encuentran todas las solicitudes disponibles.
Para autenticar las solicitudes:
- Usar la petición api_token_gen.
- Se enviarán automáticamente los datos de usuario y contraseña preconfigurados.
- La API responderá con dos tokens.
- Copiar el valor del token "access" (el string largo entre comillas).
Para incluir el token en las peticiones:
- En la sección Headers de cada petición, agrega la propiedad:
- En todas ya se encuentra agregada pero hace falta cambiar el token por el generado recien.
(Reemplazar
Authorization: Bearer [API Token][API Token]con el valor copiado, sin comillas).
Para modificar un dispositivo con la request device_editor, se pueden enviar solo los campos que se desean actualizar.
{
"nombre": "Nuevo Nombre del Producto",
"descripcion": "Nueva Descripción",
"precio": 500.0,
"stock": 10,
"tipo": "Smartphone",
"sistema_operativo": "Android",
"imagen_url": "https://example.com/imagen.jpg"
}- Si solo se envía "nombre", solo se actualizará ese campo sin afectar los demás.
- La API es flexible y permite editar solo los campos necesarios.
Al agregar un nuevo dispositivo a través de la API device_adder, se puede incluir una imagen del producto de dos formas:
- Adjuntar la imagen en la petición (como un archivo en formato
PNGcon proporción1:1). - Proporcionar una URL de la imagen, permitiendo que el sistema la descargue automáticamente y la almacene en el directorio
media/products/.
- Formato: PNG
- Relación de aspecto: 1:1 (cuadrada)
- Método de envío: Archivo en la petición o URL válida
Si se proporciona una URL, el servidor gestionará la descarga y almacenamiento de la imagen en media/products/. Asegúrate de que la URL sea accesible y que la imagen cumpla con los requisitos de formato.
Ejemplo de JSON con URL de imagen:
{
"nombre": "iPhone 15",
"descripcion": "Última generación de Apple",
"precio": "1200.99",
"stock": 10,
"tipo": "smartphone",
"sistema_operativo": "iOS",
"imagen_url": "https://cablenet.com.cy/wp-content/uploads/iPhone_15_Pro_Max_White_Titanium_Hero_Alt_Screen__USEN.png"
}Una vez configurado el token, es posible realizar todas las peticiones y visualizar las respuestas sin inconvenientes.
¡Listo para interactuar con la API en Bruno!
Licencias:
Este proyecto es Software de Código Abierto (OSS). Puedes clonarlo o forkeado sin problemas y utilizarlo según tus necesidades. Si decides contribuir o modificar el proyecto, ¡bienvenido sea!