Jornadas de Software Libre 2007 JSL2007

Slides:



Advertisements
Presentaciones similares
Introducción a Django Manuel Kaufmann Septiembre de 2009
Advertisements

Curso : Programación Web 1 Profesor : Aníbal Martínez Aguas Tema: Etiquetas básicas Capitulo 3 Semestre: 1.
Separación de la presentación: Plantillas CI-2413 Desarrollo de aplicaciones para Internet.
Patrón MVC con STRUTS.
Te presento a Python Qué es Python? Lenguaje interpretado
Daniel Correa Botero. Las capas en azul representan módulos prediseñados que no se deben programar.
Symfony La Vista y el Controlador (MVC)
BackBone JS Una introducción.
SISTEMA DE GENERACIÓN Y SEGUIMIENTO DE REPARACIÓN DE CONTENEDORES
HTML Estructura.
Taller 5: Trabajo con Plantillas y uso de tecnología Ajax.
Mini curso: Inteligencia de negocios (Bodega y Minería de Datos) aplicación práctica Mauro Callejas Cuervo Ecuador, Mayo 2014 Sesión 2 – TALLER 2 Grupo.
Drupal Day Valencia Taller de Simpletest Juan Pablo Novillo Ricardo Sanz Ante 28 de abril de 2012.
FACTORY METHOD Edmundo Álvarez Jiménez Antonio Fernández Alonso
Java Server Faces.
Ingeniero Esp. Ricardo Cujar.  ROL hace referencia al usuario que manejará la base de datos.  create user with password ´ ´;  create user ricardo with.
 Patrón de diseño de software.  Representar de forma Orientada a Objetos los datos de una Base de Datos Relacional.  Consiste en instancias de clase.
Structured Query Language (Lenguaje Estructurado de Consultas)
¿Cómo hacer un Login conectado a una base de datos en Access?
P ROYECTO DE A CADEMIA 3.1 DisEcuador. ¿Q UÉ ES D IS E CUADOR ? DisEcuador es una pagina web desarrollada a partir de datos recolectados sobre las discapacidades.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) LENGUAJES DE PROGRAMACIÓN PARA EL DESARROLLO DE INTERFACES.
Luis Ponce Cabello.  Primera Parte : JSF  Segunda Parte : Facelets  Tercera Parte : Icefaces.
Cómo crear tu primer MVC WebPart en Sharepoint 2010 Ing. Randall Barnett Villalobos, Mci DBA / Developer Instituto Costarricense de Electricidad.
Base de datos Francisco Castro. Creación de una tabla drop table TABLA cascade constraints; /*==============================================================*/
Simulador Redes Nombres etc,,.
Nombre de la Institución evaluada:Ministerio de Bienes Nacionales URL de su sitio web: Evaluador:Héctor Monsalve Fecha y.
INTER FAZ DE ACCESS COLEGIO DE BACHILLERES PLANTEL 13 XOCHIMILCO-TEPEPAN MONTIEL FUENTES REYNA ELIZABETH RIVAS ALANIS ARIANA VALERIA GRUPO:304.
INS-204 Fundamentos de Programacion notas de clase, objetivo, programar en Python con nivel medio de destreza.
TITLE. Title Text Title Text Title Text.
Introducción a ASP.NET MVC3. Introducción ASP.NET MVC es un framework para la creación de aplicaciones web que aplica el patrón Model View Controller.
Crear Aplicación Cliente para Conectarse a una Base de Datos.
Definición: Es un estilo de programación, su objetivo primordial es la separación de la capa de presentación, capa de negocio y la capa de datos. ARQUITECTURA.
Softlogia S.R.L. Formación de Recursos Humanos Hibernate Core Instructor: Martin R. Baspineiro.
Introducción a DSL Tools con Visual Studio Abdul Wahab Sultán Regalado.
¿Que es Yii ? Framework para PHP de alta performance basado en componentes web para desarrollar aplicaciones web de gran escala. Yii es un framework que.
PRESENTACIÓN DRUPAL Versión 0.1 Por Ricardo Chang.
Tiempos oskuros. ? módulos contribuidos.
Estándares web 18s 20s 25s 27s 02o. Presentación manuelrecena.com
Principios, teoría y práctica sobre los conceptos de HTML básicos.
Javier Smaldone 5tas Jornadas Regionales de Software Libre Noviembre de 2005 Rosario, Santa Fe, Argentina Primeros pasos en.
Ingeniería del Software Diseñó de Software Universidad de los Andes Demián Gutierrez Abril 2009.
COMUNICACIÓN Y TIC Ángela Espinosa Hayler Peñaranda.
Francisco Moreno Bases de Datos II Universidad Nacional
Djangobile, adecuación multidispositivo en django
BASE DE DATOS IUPSM CLASE PRACTICA. PROF. ING. JOSE L GUZMAN H.
Java Script (JS) Prof. Martín Contreras.
SQL: structured Query Language
Miguel García Ruiz Jackeline Giraldo Urrea
UN DISPARADOR O TRIGGER es un procedimiento que se ejecuta cuando se cumple una condición establecida al realizar una operación. Es una rutina autónoma.
Mi Experiencia Personal
HTML, Editores HTML, Servidores Locales
Push Notifications.
Sentencias DDL.
Oracle Pl/SQl Developer – Nivel 1
Desde «hola mundo» a conexiones con Bases de datos
Formularios HTML.
BASE DE DATOS DINAMICAS
ARQUITECTURA DE APLICACIONES WEB.
FUNDAMENTOS DE PROGRAMACION EN ENTORNO WEB. Rodrigo Cabello Ing. Informático Director de proyectos Think – Ideas in Motion FUNDAMENTOS.
1. 2 create table DEPARTAMENTO( numero integer primary key, nombre text, director integer not null, F_inic_Director date, CONSTRAINT director_FK FOREIGN.
Unidad V :- Integridad de datos.
<html> <head> <title> </title> </head>
ARQUITECTURA DEL PROYECTO. La estructura modelo vista controlador se muestra en la siguiente ilustración : ESTRUCTURA DE PROYECTOS DE MVC.
HARDWARE SOFTWARE. HARDWARE VOLVER SOFTWARE VOLVER.
TITLE. Text Title Text Title Text.
HTML.
HTML.
Tecnología Web Rodrigo Durán y Juan Díaz. ¿Que es?
Title. Text Title Text Title Text Title Text.
Lenguaje de definición de datos. Un lenguaje de base de datos o lenguaje de definición de datos es un lenguaje proporcionado por el sistema de gestión.
Transcripción de la presentación:

http://vultur.unicauca.edu.co Jornadas de Software Libre 2007 JSL2007 Django Desarrollo web en Python Edwin Caldón http://vultur.unicauca.edu.co Jornadas de Software Libre 2007 JSL2007

Agenda Arquitectura Ejemplo Estructura (proyecto y aplicación) Definir Modelos Vistas Plantillas Otros Frameworks Links

Django « Django es un framework de Web de alto nivel en Python que estimula el desarrollo rápido y el diseño limpio y pragmático »

Framework ? URL's limpias Componentes con bajo acoplamiento Diseño amigable de templates Poco código como sea posible Desarrollo realmente rápido

Arquitectura

V T C V M M Lógica de Presentación Templates Lógica de Negocio Views, URLConf (Models, Templates) Lógica de Acceso a datos - Persistencia M M Models, Data Access

Ejemplo

Juego de preguntas (Trivial) Las preguntas y los usuarios los crea un administrador. Existen diferentes categorías de preguntas. Cada usuario tiene su propio juego (esto es, responde a sus preguntas). Es obligatorio estar validado en el sistema para jugar.

Estructura

trivial/urls.py trivial/settings.py trivial/__init__.py django-admin.py startproject trivial trivial/urls.py urlpatterns = patterns('', (r'^pregunta/$', funcion_pregunta), ) . . . trivial/settings.py trivial/__init__.py ROOT_URLCONF INSTALLED_APPS . . . trivial/manage.py

trivial/ juego/views.py juego/models.py juego/__init__.py python manage.py startapp juego juego/views.py juego/models.py juego/__init__.py class Pregunta(models.Model): titulo = models.CharField("Título", maxlength=200) . . . def index(request): preguntas = Pregunta.objects.all() return render_to_response('index.html', {'respuestas': respuestas, 'usuario': request.user,} ) . . .

Definir Modelos - Models

from django.db import models from django.contrib.auth.models import User class Pregunta(models.Model): titulo = models.CharField("Título", maxlength=200) texto = models.TextField("Texto de la pregunta") respuesta_1 = models.CharField(maxlength=200) respuesta_2 = models.CharField(maxlength=200) respuesta_3 = models.CharField(maxlength=200) respuesta_4 = models.CharField(maxlength=200) respuesta_correcta = models.CharField(maxlength=200) foto = models.CharField(maxlength=200) def __str__(self): return self.titulo . . . juego/models.py

settings.py DATABASE_ENGINE = 'postgresql' DATABASE_NAME = 'trivial' DATABASE_USER = 'postgres' DATABASE_PASSWORD = 'postgres' DATABASE_HOST = 'localhost' DATABASE_PORT = '5432' INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.admin', 'trivial.juego', ) . . .

$ python manage.py sqlall juego CREATE TABLE "juego_pregunta" ( “id” serial NOT NULL PRIMARY KEY, “titulo” varchar(200) NOT NULL, “texto” varchar(200) NOT NULL, “respuesta_1” varchar(200) NOT NULL, . . . );

$ python manage.py syncdb Creating table juego_pregunta . . .

>>> from juego.models import Pregunta >>> p = Pregunta(titulo='', texto='', ... respuesta_1='', respuesta_2='', . . .) >>> p.save()

Operaciones CRUD Clase Modelo Tabla Instancia de la clase Registro Database API Operaciones CRUD Clase Modelo Tabla Instancia de la clase Registro

Interfaz de administración

Views - URLConf

URLConf (urls.py) Despachador de URL's http://www.example.com/pregunta/3/ from django.contrib.auth.views import login, logout from django.conf.urls.defaults import * from settings import MEDIA_ROOT urlpatterns = patterns('', (r'^/?$', 'trivial.juego.views.index'), (r'^pregunta/(\d+)/$', 'trivial.juego.views.pregunta'), (r'^admin/', include('django.contrib.admin.urls')), . . . )

views (juego/views.py) from django.shortcuts import render_to_response from django.contrib.auth.decorators import login_required from trivial.juego.models import Pregunta, Respuesta @login_required def pregunta(request, id): pregunta = Pregunta.objects.get(id=id) try: respuesta = Respuesta.objects.get(pregunta=id, usuario=request.user) except ObjectDoesNotExist: respuesta = None return render_to_response('pregunta.html', {'pregunta': pregunta, 'respuesta': respuesta, 'tiempo': str(int(time.time())), } )

Plantillas - Templates

Molde (guía) que contiene variables, las cuales se reemplazan cuando se evalúa la plantilla, y tags (for, extend, filter, load, include ...), las cuales controlan la lógica del template.

base.html <html> <head> <title> {% block title %}{% endblock %} </title> </head> <body> {% block cuerpo %}{% endblock %} <div id=”footer”> {% block footer %}(c) 2007{% endblock %} <div> </body> </html>

Herencia de Templates Permite construir un “esqueleto” que contiene todos los elementos comunes del sitio y define bloques que los hijos pueden sobreescribir

pregunta.html {% extends "base.html" %} {% block cuerpo %} <h2>Categoría: {{ pregunta.categoria }}</h2> <h3>{{ pregunta.titulo }}</h3> {% if texto_error %} <p class="error">{{ texto_error }}</p> {% endif %} <img class="foto" src="/site_media/{{ pregunta.foto }}"> <p>{{ pregunta.texto }}</p> {% if respuesta %} <p>Ya has respondido antes a la pregunta.</p> <p>Tiempo empleado: {{ respuesta.tiempo }} segundos.</p> <p>El resultado fue {% if respuesta.resultado %} CORRECTO {% else %} INCORRECTO </p> {% else %} <form method="post" action="/responder/"> <input type="hidden" name="pregunta" value="{{ pregunta.id }}"> <input type="hidden" name="tiempo" value="{{ tiempo }}"> <input type="radio" value="{{ pregunta.respuesta_1 }}" name="respuesta">{{ pregunta.respuesta_1 }}<br> . . . <br> <input type="submit" value="Responder"> </form> {% endblock %} pregunta.html

urls.py settings.py views.py django-admin.py startproject ROOT_URLCONF . . . urlpatterns = patterns('', (r'^pregunta/(\d+)$', funcion_pregunta), ) python manage.py runserver http://127.0.0.1:8080/pregunta/3/ def funcion_pregunta(request,id): pregunta = Pregunta.objects.get(id=id) return render_to_response( 'pregunta.html', {'pregunta': pregunta, 'respuesta': respuesta, } HttpResponse

Otros Frameworks

http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks

Links

http://djangobook.com http://djangoproject.com/documentation/ http://www.django.es [google groups] http://davidasorey.net/static/django-tutorial/ Ben Askins and Alan Green.(2007). A Rails / Django Comparison. The Python Papers, Volume 2, Issue 2. Disponible en pythonpapers.org.

Por su atención Preguntas Gracias Por su atención Preguntas