2013 • Ingeniero técnico en gestión por la UIB desde 2008 • 4 años en IFISC administrando servidores y programando web mal • 9 meses en mola administrando sistemas • Me gusta un poco el diseño en HTML+CSS y el diseño gráfico • Aprendiz de todo, especialista en nada • www.pescandoenmallorca.com • www.foowill.com • www.eduherraiz.com Presentación
3. Tecnologías asociadas a Django 4. Plantillas de aplicación y demostración Desarrollo rápido de aplicaciones en Django - @eduherraiz - Abril 2013 El plan
2013 Importancia del arranque de aplicaciones ¿qué es el arranque? Después de la definición de requerimientos Se escogen las tecnologías a utilizar Se escoge el lenguaje y el framework El proceso de integración de las tecnologías a utilizar Antes de crear el modelo o definir funcionalidad
2013 Importancia del arranque de aplicaciones ¿para qué? Tener todas las tecnologías a utilizar al empezar el proyecto Menos pruebas de integración entre funcionalidades Imponer una manera común de trabajar Re-asignación de proyectos entre programadores Re-asignación de programadores entre proyectos Mantenimiento y ampliación de la aplicación Re-utilización de código entre aplicaciones
2013 Importancia del arranque de aplicaciones ¿que cosas pueden definirse en el arranque? Login con mail y redes sociales Multidioma Diseño básico estandar, librerías javascript y método para realizar ajax Sistema de notificaciones Caché de sesiones y páginas Sistema de control de tareas (background y programadas) Entornos de ejecución preparados Procedimientos de migración entre entornos
2013 Introducción a Django ¿porqué Django? Está diseñado para programar rápido y programar bien Muchas cosas ya están hechas (y integradas) Menor coste para probar una idea Mas ideas se podrán probar El rendimiento casi nunca es lo importante al empezar Entorno compartido al inicio Según escale se migra a otra arquitectura de sistemas
2013 Introducción a Django ¿qué es Django? Framework MVC en python para crear webs (desde 2005) Diseñado para re-uso, conectividad y extensibilidad de componentes, el desarrollo rápido y DRY. (Ver: Filosofía de diseño) Muchas aplicaciones empaquetadas externas para integrar Sistema de creación de backend a partir del modelo (muy simple y rápido) Buena documentación y mucha comunidad Al ser python permite utilizar cualquier librería python en el código Sistema de desarrollo integrado
2013 Introducción a Django Modelo de datos ORM propio donde se define el modelo Se define un models.py para cada aplicación Tienes una API para crear, recuperar, actualizar y borrar objetos Puedes utilizar consultas SQL directamente (indispensable rendimiento) SQLite, Mysql, Postgres . Que pueden variar entre entornos Herramientas para la resincronización del modelo python manage.py syncdb “Fixtures” para datos iniciales de la aplicación
2013 Introducción a Django Controlador de URLS Mapea las diferentes urls a sus respectivo controlador Desde el archivo urls.py general Se pueden controlar desde cada app, pero hay que añadirla al general Expresiones regulares para su control Preparado para URLs multi-idioma Control de errores (404, 500, 403) Más cosas
2013 Introducción a Django Controlador Recoge parámetros GET/POST Con la API se extraen los datos del modelo y se devuelve la página Puede crear objetos que le llegan por post Relaciona la salida a un template para renderizar Utilización de decoradores Articulo de @aaloy explicando los decoradores en django
2013 Introducción a Django Vista Recibe los datos tratados desde el controlador Las vistas se definen en archivos html con un lenguaje de tratamiento Se anidan los archivos. Para crear una base, o un header/footer En lenguaje se usan tags para definir como tratar los datos Tags funcionales para condicionales, recursividad, traducción, etc Posibilidad de crear tags propios para cosas especiales Lenguaje no para programador, más bien para diseñador (No python) ¿Requiere entorno completo de desarrollo para diseñador?
2013 Introducción a Django Entorno de desarrollo Ejecutas un comando y te arranca un webserver en local Con SQLite no necesitas configurar la BD en local A cada cambio relevante del código se reinicia el webserver Ves en consola las peticiones y mensajes de debug Si el parámetro de DEBUG está activado, errores en el navegador python manage.py runserver 0.0.0.0:8000
2013 Introducción a Django Configuración del proyecto Archivo settings.py Se dan de alta las aplicaciones Parámetros generales: claves, accesos, ... Recomendación: properties.py por entorno y que lo lea el settings.py Subir al repositorio properties.py.template y excluir properties.py
2013 Introducción a Django Control de los archivos estáticos Debe estar fuera del control de Django en producción ¿Porqué? Django tiene herramienta para controlarlo Se especifican los directorios de static de las aplicaciones Se ejecuta un comando para recoger archivos nuevos y cambios python manage.py collectstatic (se debería automatizar al deploy) Puede ser un poco lioso, aunque es una cosa más de sistemas Más, como siempre, en la documentación de Django
2013 Introducción a Django Traducciones y internacionalización Traducciones, formato de fechas, horas y números. Zonas horarias. En el control, en los templates, en las urls y hasta en el settings Se marcan los textos a traducir en cualquier lugar Con un comando se generan los archivos de traducción (archivos .po) #fuzzy lines Se traducen esos archivos (sin python, formato de traduciones) Se compilan los archivos (archivos .mo) Más, como siempre, en la documentación de Django
2013 Introducción a Django Generador de panel de administración A partir de un modelo definido Aplicaciones independientes ya auto-integran su sección en el backend Genera una interfaz para buscar, insertar, modificar, eliminar objetos Muy pocas lineas y configuración simple Para cosas más complejas hay que programarlo como el frontend Otros paneles no-oficiales: grapelli, ckeditor, bootstrapped Más, como siempre, en la documentación de Django
2013 Tecnologías asociadas a Django Entornos virtuales + pip Se crea un entorno de ejecución por proyecto Ejecutable Python y TODAS las librerías se independizan de las de sistema Permite tener múltiples proyectos en la misma máquina Evita problemas de migración entre entornos pip es como un control de paquetes: actualiza versiones y dependencias mkvirtualenv entorno | workon entorno | pip install paquete pip freeze > requerimientos.txt | pip install -r requerimientos.txt Genial para probar nuevas versiones de paquetes
2013 Tecnologías asociadas a Django Redis Redis es una base de datos en memoria (clave-valor) muy rápida Se utiliza en proyectos Django para diversas cosas Caché de paginas Caché de sesiones Tareas en background y programadas (con celery)
2013 Tecnologías asociadas a Django Celery Celery es un gestor de tareas genérico Sirve para las tareas programadas (como si fuese cron) Integrado en el código y sin necesidad de crear scripts para las tareas Mejor mantenimiento – Reutilización de código – Menos errores También para las tareas en background desde la web Todo lo que lleve tiempo y que no sea necesario que el usuario espere Se puede combinar para que utilice muchas bases de datos como transporte Redis por su simplicidad de configuración y además también lo usamos para la caché Se integra muy fácil con Django gracias a django-celery
2013 Tecnologías asociadas a Django Fabric Librería python para crear scripts con herramientas para tareas de admin Puedes configurar los servidores de todos los entornos Se encarga de automatizar el despliege del proyecto django Instalar requerimientos (de sistema o de proyecto) Backups Actualizar el código de un entorno en una máquina remota Recoger los archivos del static Aplicar migraciones de south Reiniciar servicios – (con supervisor)
2013 Tecnologías asociadas a Django django-supervisor Sirve para controlar los servicios de django Si alguno cae lo intenta levantar Configura un archivo con los servicios y configuración a arrancar
2013 Tecnologías asociadas a Django django-social-auth Es una app para controlar el registro de usuarios desde redes sociales Puede asociar el usuario de django con las redes sociales Y se puede utilizar como login desde redes sociales Permite un montón de redes sociales o métodos de login También se instala desde pip, fácil integración
2013 Tecnologías asociadas a Django django-registration Es una app que prepara el registro normal de un usuario Configurable para: Enviar email de verificación o de recuperación de contraseña Solo hay que modificar los templates para los emails Se puede integrar con el login de Django Asociar redes sociales del django-social-auth
2013 Conclusiones Django es una solución total, desde desarrollo hasta producción Muy rápido desarrollo, fácil mantenimiento y no muy difícil de escalar Fácil actualización de librerías externas Muy estable y con mucho código externo funcional