Github Repo: elc.github.io/... En este video veremos una forma de estrucutrar aplicaciones Flask que es particularmente útil para tener un fácil mantenimiento y extensión en el futuro.
Gracias, estaría buenisimo un proyecto con arquitectura hexagonal, usando flask. y algún servicio de aws como adapter. Realmente no se encuentra mucha documentación de cómo aplicar clean architecture para python. Salu2
Excelente aporte, muchas gracias!!! Me ayudaste con la estructura de mi primer proyecto en la empresa !! Por cierto cual es tu fuente y thema de editor??
Buen día y Muchas gracias por el aporte, es de mucha ayuda. No sé si sea posible subir un tutorial de XAMPP con la instalación y conexión a Python, del mismo modo que lo hizo en este video? Aprender a estructurarlo por capas despertó por completo mi interés de aprender Python, pero las bases de datos aún me causan problemas. Saludos.
XAMPP está pensado para usarse con Perl y/o PHP es por eso que no hay mucha documentación sobre el uso de XAMPP y Python. Además, usar Python elimina la necesidad de un servidor Apache. Mi sugerencia es que busques tutoriales sobre como integrar bases de datos con Python, lo más sencillo es SQLite, que no requiere configuración ni servidor.
Hola, gracias por este video; consulta, en el video se muestra una carpeta de nombre app con carpetas y ficheros correspondiente, se entiende que "app" se refiere a una aplicación contactos dentro del directorio flask estructure. Si agrego una nueva aplicación, de nombre "app1" a modo didáctico, en este ultimo directorio (flask estructure) tendría que replicar dentro de "app1" las estructura de carpetas y ficheros de la carpeta "app" respetando asi el modelo por capas que usted sugiere, entendiendo que se deben modificar los contenidos de los ficheros de la nueva "app1" para cumplir los requerimientos particulares de esta ultima"? ¿este proceso se repetiría si agrego una app2, app3, etc...en el entendido que estas son aplicaciones o subdivisiones de mi proyecto general "flask estructure" a fin de facilitar la mantención futura del proyecto? Favor aclarar
Lo ideal es mantener una aplicación por directorio y no tener múltiples aplicaciones por directorio El caso donde se tienen múltiples aplicaciones suele conocerse como "monorepo" pero es un tema avanzado que no me parece conveniente abordar si uno está aprendiendo como estructurar una aplicación
Buenas, veo que respondes comentarios asi que me animo a hacer una pregunta: Yo utilizo base de datos de mysql, el sistema a aplicar es igual al que usas? Vaya, en un curso de desarrollo web me enseñaron programacion funcional, como hubiese deseado que me explicasen este esquema de estructura de proyecto :3 Gran video Ezequiel, muchas gracias
Buenas Leandro, Todo lo que está en el video es válido para cualquier base de datos, puede haber pequeñas diferencias pero lo que deberías cambiar el código de la función __get_cursor para que se conecte a tu base MySQL en lugar de usar la SQLite Flask es bastante flexible y permite tanto un enfoque funcional como orientado a objetos, lo importante es no forzar cosas.
@@ezequiell.castano-espanol1088 Compa, siguiendo tu estructura, aunque con algunas diferencias (ya que simplifique para empezar) obtengo un error que en el pasado no he obtenido, y no encuentro solucion, tal vez tengas te pregunto: UserWarning: 'localhost' is not a valid cookie domain, it must contain a '.'. Add an entry to your hosts file, for example 'localhost.localdomain', and use that instead. Ese es el error...
@@KingCrimson6 Ese tipo de error es probablemente por la configuración que tienes sobre los hosts. Podrías verificar el host en SERVER_NAME en el config.py y asegurarte que estés usando localhost Si tu código incluye manipulación de cookies, tienes que asegurarte que sea el mismo dominio también
Estimado, en primer lugar, gracias por tu tiempo, necesito reescribir en flask un proyecto desarrollado en Django que usa un estilo particular al framework o sea una carpeta raíz con las configuraciones aplicables al proyecto y luego una serie de carpetas que serían las diferentes apps que lo integran, Después de haber visto tu video y estudiado un par de buenos libros (uno de ellos de Miguel Grinber el cual recomiendo y mucho) tengo todo lo necesario para iniciar la codificación, pero me surge una duda que seguramente me puedas evacuar y es referente al patrón MVC que has desplegado en tu ejemplo, (soy de la escuela de la programación funcional) Mi pregunta es la siguiente: Si yo quisiera organizar la estructura del proyecto en una carpeta principal y varias subcarpetas las cuales cada una implicará una app independiente, app -> auth; app->users; app->storage ... etc. ¿Debería crearme en cada subcarpeta de app, aquellas de nombre controller, views, database : auth -> controller; auth -> views ... storage->controller; storage -> views ... ? o debería crear una subcarpeta por cada app dentro de ellas: controllers->auth; controller->users; views->auth; views->users ... etc Ojalá logres entender cual es mi duda, Fuerte abrazo.
Buen día George, Ese tipo de preguntas depende mucho de la arquitectura de la aplicación y del framework que se use. La respuesta cambiaría si, por ejemplo, la app auth va a ser usada por múltiples aplicaciones o sólo por una. Te recomiendo ver el patrón de Micro Servicios, Miguel habla bastante de ese tema. De igual manera, si estás usando Django, te recomiendo buscar ejemplos que muestren como es el "Django way" de hacerlo. No tengo experiencia con Django así que no puedo asesorarte pero hay muchos videos y conferencias del tema, te recomiendo buscarlas y seguramente vas a encontrar algún caso de uso similar al tuyo. Una salvedad, si estás usando un framework de Front-End (Angular, React, Vue), normalmente todo se suele relacionar mediante API Rests, entonces la division entre la vista y el controlador es mucho más marcada, en ese caso, no lo pensaría como aplicaciones independientes
@@SkielCast Hola de nuevo, gracias por tu tiempo, confieso que me ganó la premura, he profundizado más en el tema y por suerte he logrado dar con la solución apropiada, tu explicativo me ha servido de mucho para encadenar conceptos. Saludos colega desde Uruguay
Las buenas prácticas indican que uno siempre tiene que tener un modelo de objetos que replique al de la base de datos, de lo contrario se dificulta el intercambio de información entre las capas. Para hacer el proceso más sencillo con base de datos existentes puedes utilizar un ORM como SQLAlchemy
@@SkielCast ok, es que realmente no entiendo el funcionamiento de esa clase ... no sé si esa clase sustituye a mi base de datos porque veo que después de aplicar los migrate se crea las tablas
@@fernandopalacios8613 Tienes que experimentar y asegurarte que entiendes bien la función de cada clase antes de implementarlo en un sistema. Esa clase es sólamente para tener un modelo lógico de la base de datos
Es totalmente válido ese punto, el video estaba pensado para una audiencia sin experiencia en Flask ni en tests y añadir los tests no iba a cambiar significativamente la estructura de la aplicación. En este caso para hacer tests automáticos hay 3 alternativas: Hacer unit tests con Pytest (qué requiere experiencia con el servidor de prueba de Flask), usar una herramienta externa como Postman o ThunderClient (Sólo apto para APIs) o usar un framework the testing web como Selenium o Playright
Me gustaría agregar que podrían utilizar en su código .editorconfig para tener un seguimiento de estilo en su código, así mismo, también un folder con documentación.