Creando aplicaciones client-side con Django y Backbone.js



Documentos relacionados
Integración de servicios de almacenamiento virtual

11/06/2011. Alumno: José Antonio García Andreu Tutor: Jairo Sarrias Guzman

Programación de Consultas SQL ADO.Net LDP / DUOC-AV

Departamento de Ciencias e Ing. geniería de la Computación. Diego C. Martínez - DCIC-UNS

(Rich Internet Applications) (Aplicaciones de internet enriquecidas).

Introducción Delicious Algunas características: Sitio para acceder a esta herramienta Qué es Delicious?...

[4 ]Instalación y configuración básica de drupal.

Sesión 20. MVC en ruby on rails. Luisa Fernanda Rincón Pérez

Generador de Proxy remoto JavaScript.

Tema 1 HTTP y aplicaciones web

CAS Gateway para convertir desde los equipos Veeder TLS 300, 350, 450 Hacia Modbus (RTU and TCP), BACnet, y HTML

Social Coding GIT - El control de versiones es la gestión de los diversos cambios que se realizan sobre algún archivo, en este caso, código.

Servicio de Apoyo a la Investigación. Tutorial EndNoteWeb

CURSO DE PROGRAMACIÓN PHP MySQL

Ejercicios de AJAX y REST

Enlace para bajar la herramienta: ftp://ftp.cs.stir.ac.uk/pub/staff/kjt/software/jasper-1.3.tar.gz

Práctica de laboratorio a Configuración de listas de acceso extendidas

Tutorial Servicios Web

MAESTRO DE PHP PHP NIVEL 1

Manual de Desarrollado de Módulos en Español. Version Beta. Escrito por: Bruno Macias V.

GTIDEE Web Feature Service (WFS) Versión Página 1 de 9 IDEE. Estándar de interfaz. Web Feature Service (WFS) Versión 1.1.

Programa de Certificación e Integración Laboral. Desarrollo Web Universidad Autónoma de Chihuahua Facultad de Ingeniería

EXTENSIÓN DE UML PARA APLICACIONES WEB

1. INTRODUCCIÓN 2 2. EVERDRIVE LITE 3 3. SINCRONIZADOR DE EVERDRIVE 4 4. VISTA GENERAL DE LAS OPCIONES DE LA APLICACIÓN 5

La web (el servicio WWW)

TUTORIAL: Scoop.it PASO A PASO

UNIVERSIDAD COOPERATIVA DE COLOMBIA POSTGRADO MULTIMEDIA PARA LA DOCENCIA ELECTIVA I CREACIÓN DE AMBIENTES VIRTUALES

Sistema en Terreno SmartPhone Android

Manual de uso del Tracker (Gestor de Actividad)

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

1.1 Conceptos Importantes

JavaScript como Orientación a Objetos

Capitulo VI. Conclusiones.

Introducción a Webduino

Clase 4. Ajax XML. XML Ajax definición Breve explicación de como funciona el HTTP XMLHttpRequest. El XML se creó para que cumpliera varios objetivos.

Quiz 11: Crear preguntas. Juan Quemada, DIT - UPM

Portal Inteligente Medellín Documentación de la Arquitectura de Software

Aplicaciones en Tiempo Real con node.js Por: Oscar Gracia. Aplicaciones en tiempo real con node.js. Marzo

Programación de páginas web dinámicas con CGIs

Guí a Ra pida Dropbox.

Demo - DataSnap y Nube

Introducción a Django

WEB SERVICES TUTORIAL. Tutorial completo para poder crear y utilizar Web Services con las configuraciones más usadas de forma profesional.

Cómo crear un fichero de ayuda para tus aplicaciones?

MICROSITIOS. Perfiles

WEB SERVICES CON AXIS

Reemplazo de una Supervisora en un Sistema de Conmutación Virtual (VSS)

API de búsqueda (LFASparql)

U.E JUAN DE VELASCO CREAR DATOS EN SQL

UTILIZACIÓN DE NAVEGADORES WEB PARA INTERACTUAR CON PROGRAMAS DESARROLLADOS CON LABVIEW POR MEDIO DE INTERNET

Cámaras de Internet. Como configurar el módem Speedtouch para Videovigilancia

BackflipSD Modelo de Diseño

Guía para la migración

Desarrollo de Aplicaciones para ios

Aplicaciones Web con Delphi

Conectar Outlook con Exchange en local

RESTful 4 all. Diego Sapriza

GALA CONCEPTO COMMIT, ROOLBACK SAVEPOINTS (SAVE TRANSACTION) No Consultas. Definiciones Transacciones ( L33 )

ALTAS MANUAL DE USUARIO PARA EL PROTOTIPADO DE APLICACIONES

Desarrollo y servicios web

CLASE 6 Creación de sitios web en Web Page Maker Básico

Umbrella Soluciones Mitrack Y Mitrack plus Guía de usuario

Guía básica para subir vídeos a Youtube

Instrucciones para Integración con PayPal

CONFIGURACIÓN BÁSICA TP-LINK APLICABLE A MODELOS: TL-WR841N & TL-WR841ND Sistemas Operativos de escritorio: Windows XP, Vista, 7, 8 y 8.

(Es traducción del texto de Ayuda de la página de información sobre Refworks 2.0:

Manual de AutoUpdate del PoiEdit. Por PeJeSa. Para el foro de Todopocketpc.com

Estrategia de modernización de aplicaciones Oracle Forms y Reports

Copias de seguridad con SQL Server 2005 WhitePaper Febrero de 2008

SUBVERSION Y SUBCLIPSE

Sistemas de Caché. Para mejorar la velocidad de carga de una web. papers. acens

FORMACIÓN Modelo de programación web y bases de datos

CONFIGURACION DE HOSTING EN SERVIDOR HST

Administración de Redes y Netbooks en la Escuela. Anexo III Manual de Procedimientos Técnicos

En este ejemplo también vamos a crear la capa Entidades que va a servir para modelar nuestra base de datos.

Trabajos de Ampliación. Bases de datos NoSQL.

Tema 4: Tecnologías Web Java

CmapTools in the Cloud: MAPAS CONCEPTUALES EN LÍNEA Primeros Pasos

GUÍA PARA LA INSTALACIÓN Y USO DE WORDPRESS BY MASTERHACKS. Guía de instalación y uso de Wordpress Página 1

TFM Comunicación, Redes y Gestión de Contenidos

Práctica de laboratorio Configuración del enrutamiento EIGRP

Mail Disclaimer Versión 1.7.4

Universidad ORT - Arquitecturas de Software sobre plataforma JEE Web Services (parte 1)

Administración de FW. Autores: Sistemas - Redes Fecha de Creación: 25/08/09 Última Actualización: 07/09/2009 Versión: 1.1.

Práctica de laboratorio a Configuración de listas de acceso estándar

SUBIR ARCHIVOS CON FTP. TRABAJAR EN UN SERVIDOR REMOTO. CREAR UNA PÁGINA WEB CON PROGRAMACIÓN PHP. (CU00814B)

ZK Fingerprint Reader Management Software para lectora SF101.

Integración de Magento & Dynamics NAV

Symfony. Framework para el desarrollo de aplicaciones Web con PHP

WPeMatico. Wordpress-Plugin

Tutorial de Unity 3D Tema 52 Bases de Datos. Tutorial de Unity 3D. Bases de Datos

TECNOLOGÍAS ASOCIADAS A LAS APLICACIONES WEB

1º Crear nuestro blog en blogger

1 INSTALACIÓN DE LA TARJETA DE COMUNICACIONES CP5613 EN EL PC (para Windows 2000 pro)

Diplomado Java. Descripción. Objetivo. A quien está dirigido. Requisitos. Beneficios

Curso de JavaServer Faces

Manual Mage Translator by Interactiv4 Versión /06/2013

Workshop: Behavior Driven Development (BDD) in JavaScript

Desarrollo y servicios web

Transcripción:

Creando aplicaciones client-side con Django y Backbone.js

Problema/Desafio La necesidad de hoy en dia en aplicaciones web. En web concurridas, el desafío es mejorar los tiempos de respuesta, bajar la tasa de transferencia de datos. La solución: mover el código de nuestra aplicación, que hasta ahora la tenemos del lado del servidor, hacia el lado del cliente. Esto nos lleva a tener trabajar en una aplicación web que implica una gran cantidad de código JavaScript.

Solución Es muy fácil! Creamos aplicaciones de JavaScript llenas de selectores de jquery y devoluciones de llamada, tratando desesperadamente de mantener los datos sincronizados entre la interfaz de usuario HTML, la lógica de JavaScript, y la base de datos en el servidor :( Para aplicaciones cliente-side, un enfoque más estructurado va a ser útil. Para esto, Backbone.js

Backbone - definición Backbone.js nos brinda una estructura para aplicaciones web cliente-side. Nos provee: Modelos con clave-valor y eventos customizables. Colecciones para manejar los modelos con enumerables funciones. Vistas con manejo de eventos. Y el poder de conectar todo esto a una API RESTfull con interface JSON.

Integrar backbone.js en nuestra aplicación Django Del lado del servidor: django django-tastypie Del lado del cliente: backbone.js underscore.js _.template("<% print('hello ' + var); %>"); backbone-tastypie.js https://github. com/pauluithol/backbone-tastypie

Introduccion Django models.py forms.py views.py urls.py

Moviendo del servidor al Cliente django -> backbone.js models -> Backbone.Model (API REST) manager -> Backbone.Collection views -> Backbone.View (eventos) urls -> Backbone.Router templates -> Underscore

Aplicación Blog de ejemplo

Backbone.js Backbone.Model Backbone.Collection Backbone.View

Backbone.Model PostModel = Backbone.Model.extend({ urlroot : "/api/v1/post/"}); model.tojson() model.fetch() model.get(attribute) model.clear([options]) model.fetch([options]) model.save([attributes], [options]) model.destroy([options]) model.validate(attributes) model.url()

Backbone.Collection PostCollection = Backbone.Collection.extend({ url: "/api/v1/post/", model: PostModel }); Provee 28 funciones de iteración: map, reduce, filter, find, sortby, min, max, shuffle, toarray, size, isempty,... collection.add(new Post({title: "test", body: "some text"})); collection.where(attributes) -> arreglo con resultados collection.fetch([options]) -> trae los datos desde el servidor

Backbone.View var AboutView = Backbone.View.extend({ el: $('#main_content'), template: _.template($('#about_tpl').html()), render: function(){ this.$el.html(this.template); return this; } }); about_view = new AboutView;

Catalogo de eventos que Backbone.js puede disparar. Importante tenerlos en cuenta en las vistas para enlazar a acciones. "add" (model, collection) when a model is added to a collection. "remove" (model, collection) when a model is removed from a collection. "reset" (collection) when the collection's entire contents have been replaced. "change" (model, options) when a model's attributes have changed. "change:[attribute]" (model, value, options) when a specific attribute has been updated. "destroy" (model, collection) when a model is destroyed. "sync" (model, collection) triggers whenever a model has been successfully synced to the server. "error" (model, collection) when a model's validation fails, or a save call fails on the server. "route:[name]" (router) when one of a router's routes has matched. "all" this special event fires for any triggered event, passing the event name as the first argument.

Backbone.Router var Workspace = Backbone.Router.extend({ routes: { "help": "help", // #help "search/:query": "search", // #search/kiwis "search/:query/p:page": "search" // #search/kiwis/p7 }, help: function() {...}, search: function(query, page) {...} });

Backbone.sync Es la función que Backbone llama cada vez que se intenta leer o guardar un modelo en el servidor. Por defecto, se utiliza (jquery / Zepto). Ajax para hacer una petición REST JSON create POST /collection read GET /collection[/id] update PUT /collection/id delete DELETE /collection/id

Del lado del Servidor Tastypie https://github.com/toastdriven/django-tastypie Aprovecho para agradecerle a Daniel Lindsley https://github.com/toastdriven otros proyectos: django-haystack

Preguntas? https://github.com/fsilvera/pyconuy francisco@devsar.com @fsilvera www.devsar.com