seminario: python+django

Upload: aprender-libre

Post on 07-Apr-2018

262 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/4/2019 Seminario: Python+Django

    1/38

    Seminario:Python+Django

    Ingeniera del Software orientadaal desarrollo web.

    Autores (y emails):

    Ral Jimnez Ortega, Jess Molina Lpez, Ana Lallena Arquillo, Ral Lpez CamposyJess Javier Nuo Garca

    +

    mailto:hhkaos%5Bat%5Dgmail.commailto:gsusiyo1985%5Bat%5Dgmail.commailto:nit.pstl%5Bat%5Dgmail.commailto:alaplaya2mil7%5Bat%5Dgmail.commailto:piripo.powa%5Bat%5Dgmail.commailto:alaplaya2mil7%5Bat%5Dgmail.commailto:nit.pstl%5Bat%5Dgmail.commailto:gsusiyo1985%5Bat%5Dgmail.commailto:hhkaos%5Bat%5Dgmail.com
  • 8/4/2019 Seminario: Python+Django

    2/38

    ndiceQu es Python?

    Qu es Django?Por qu usar Python+Django?Breve introduccin a PythonBreve introduccin a DjangoPor qu funciona y cmo - Ejemplo prcticoBibliografa

  • 8/4/2019 Seminario: Python+Django

    3/38

    Qu es Python?Historia y propiedades

    Por: Ana Lallena Arquillo

  • 8/4/2019 Seminario: Python+Django

    4/38

    Qu es Python?

    Python es un lenguaje de programacin creado por Guidovan Rossum a principios de los aos 90.

    Es un lenguaje interpretado e interactivo, con tipado

    dinmico, fuertemente tipado, multiplataforma y orientadoa objetos (luego explicaremos esto).

    Permite:

    Programacin OOProgramacin modularProgramacin declarativaProgramacin funcional

  • 8/4/2019 Seminario: Python+Django

    5/38

    Qu es Python?

    (Transparencia aadida con posterioridad al seminario)

    Python es usado por la NASA

    Y algunas de las entidades ms conocidas (Google, Youtube,...) tambin hacen reseas acerca del lenguaje que puedesver AQU

    http://www.python.org/about/quotes/
  • 8/4/2019 Seminario: Python+Django

    6/38

    Qu es Django?

    Historia, propiedades y filosofa

  • 8/4/2019 Seminario: Python+Django

    7/38

    Qu es Django? (I)

    Django es un marco de desarrollo web sobre Python quepermite desarrollar rpidamente aplicaciones web.

    Proviene del mundo periodstico:World online en Kansas

    La idea es poder montar sitios nuevos y aadir contenidos deforma muy (muy) rpida y dinmica

  • 8/4/2019 Seminario: Python+Django

    8/38

    Qu es Django? (II)

    Muy escalable (habilidad para, o bien manejar el crecimientocontinuo de trabajo de manera fluida, o bien para estarpreparado para hacerse ms grande sin perder calidad en los

    servicios ofrecidos)

    Sigue el principio DRY

    "Don't Repeat Yourself"No te repitas!!

  • 8/4/2019 Seminario: Python+Django

    9/38

    Por qu usar Python+Django?

  • 8/4/2019 Seminario: Python+Django

    10/38

    Por qu usar Python+Django? (I)

    El rpido avance de Internet a lo largo de los ltimos aosha incentivado al desarrollo des-estructurado de la Web.

    En un principio las pginas web no eran ms que contenidoesttico (HTML) que ofreca informacin esttica.

    Gracias a la aparicin de un amplio nmero de tecnologas

    aplicables a la web y de la evolucin y creacin de nuevosnavegadores se hace indispensable el seguimiento de:

    Estndares (W3C, Usabilidad y Accesibilidad)Tcnicas de Ingeniera del Software.

  • 8/4/2019 Seminario: Python+Django

    11/38

    Por qu usar Python+Django? (II)Hoy en da se pueden crear aplicaciones Web de la

    envergadura de cualquier aplicacin de escritorio (GoogleDocs, Amazon, EyeOS,...), y para esto el uso de lenguajes deprogramacin y bases de datos es casi imprescindible.

    Por qu usar Python+Django?1. Obliga a usar la arquitectura "Modelo Vista Controlador"2. Ofrece una interfaz transparente a la BD (ORM)

    3. Una vez declaradas las clases en el modelo (models.py),Django puede crear la base de datos por nosotros

    En definitiva: nos ahorra tiempo y nos facilita el desarrollo

    http://eyeos.info/http://eyeos.info/
  • 8/4/2019 Seminario: Python+Django

    12/38

    Problemas de usar Python+Django

    Una vez sincronizada la BD e introducido contenido enella no es posible re-sincronizarla si se ha cambiado elmodelo (actualmente: Django 0.96)

    El proceso de instalacin y configuracin es bastantecomplejo: requiere configuracin de variables de entorno,etc.

  • 8/4/2019 Seminario: Python+Django

    13/38

    Breve introduccin a PythonPor: Jess Molina Lpez

  • 8/4/2019 Seminario: Python+Django

    14/38

    Breve introduccin a Python (I)

    El lenguaje interpretado Python tiene, no obstante, muchasde las caractersticas de los lenguajes compilados, por lo que sepodra decir que es semi interpretado.

    En Python, como en Java y muchos otros lenguajes, el cdigofuente se traduce a un pseudo cdigo mquina intermediollamado bytecode la primera vez que se ejecuta, generando

    archivos .pyc o .pyo (bytecode optimizado), que son los que seejecutarn en sucesivas ocasiones.

  • 8/4/2019 Seminario: Python+Django

    15/38

    Breve introduccin a Python (II)

    Fuertemente tipado, pero con tipos dinmicos

    Una variable puede cambiar de tipo sobre la marcha, pero unavez asignado un valor se tendr en cuenta el tipo para realizarlas operaciones.

    No es necesario declarar las variablesAl utilizarlas sern declaradas de forma automtica.

  • 8/4/2019 Seminario: Python+Django

    16/38

    Breve introduccin a Python (III)Multiplataforma

    El intrprete de Python est disponible en multitud de plataformas(UNIX, Solaris, Linux, DOS, Windows, OS/2, Mac OS, etc.) por loque si no utilizamos libreras especficas de cada plataforma

    nuestro programa podr correr en todos estos sistemas singrandes cambios.

    Adems de funcionar en practicamente cualquier plataforma

    (mviles nokia, PDAs, automatas, PCs empotrados, ...)tambin funciona en todas las plataformas que soportan JAVA(Jython) y .NET (IronPython)

  • 8/4/2019 Seminario: Python+Django

    17/38

    Los tipos primitivos, as como las definiciones de unaclase, son objetos.Algunos tipos primitivos:

    Breve introduccin a Python (IV)

  • 8/4/2019 Seminario: Python+Django

    18/38

    Breve introduccin a Python (V)Mtodos de clase y de instancia:

    @classmethoddef metodoclase(cls):return soy un metodo de clase

    def metodoinstancia(self):

    return soy un metodo de instanciax = Ejemplo()print Ejemplo.metodoclase()print x.metodoinstancia()

    Herencia:class nombreClaseDerivada (nombreClaseBase):

    ...

  • 8/4/2019 Seminario: Python+Django

    19/38

    Breve introduccin a Python (VI)

    Otras caractersticas:No utiliza llaves "{" "}". Se basa en la sangra paradeterminar si una instruccin pertenece a un bloque deinstrucciones.Permite aadir y eliminar atributos en caliente.En Python, todo es un objeto (incluso las clases). Lasclases, al ser objetos, son instancias de una metaclase.

    Python adems soporta herencia mltiple y polimorfismo.

    http://es.wikipedia.org/wiki/Metaclasehttp://es.wikipedia.org/wiki/Metaclase
  • 8/4/2019 Seminario: Python+Django

    20/38

    Breve introduccin a DjangoPor: Jess Javier Nuo Garca

  • 8/4/2019 Seminario: Python+Django

    21/38

    Breve introduccin a Django (I)Django es un Framework (plataforma de ayuda a la

    programacin) implementada en Python.

    Patrn de diseo MVT ~= MVCModel > Modelo de datosView > Vistas de los datosTemplate > Plantillas de pginas

    Componentes principales:Mapeador objeto relacional (ORM)

    Gestor de URLs (usa URLs amigables)Sistema de plantillasInterfaz de administracin automtica

    http://es.wikipedia.org/wiki/URL_sem%C3%A1nticashttp://es.wikipedia.org/wiki/URL_sem%C3%A1nticas
  • 8/4/2019 Seminario: Python+Django

    22/38

    Breve Introduccin a Django (II)

    Django nos obliga a usar la Ingeniera del Software(MVC) y adems nos ofrece ORM (Object RelationalMapping) = Interfaz de acceso a BD orientada a objetosen la que:

    Se trabaja con los datos de las tablas como objetosGenera SQL optimizadoSe nos ofrece la posibilidad de dejar la creacin detablas de la BD a Django.Nos permite aplicar relaciones entre objetos a losdatos de la BD: agregacin, herencia, etc.

  • 8/4/2019 Seminario: Python+Django

    23/38

    Breve introduccin a Django (III)

    Etapas del desarrollo de una aplicacin usando Django:

    Crear el modelo de datos (models.py) Instalarlo en la base de datos (manage.py syncdb) Definir las URLs del sitio (urls.py) Crear las vistas necesarias para los usuarios finales (views.py)

    Disear las plantillas

  • 8/4/2019 Seminario: Python+Django

    24/38

    EJEMPLO:

    Proceso de servicio de una pgina Webdesarrollada utilizando

    Python + Django

  • 8/4/2019 Seminario: Python+Django

    25/38

    Proceso de Servicio de una Pgina (I)

    Los roles de Modelo Vista y Controlador son cubiertos de lasiguiente manera:

    MODELO (Modelo Django) - En l se definen la jerarqua declases de la aplicacin

    VISTA (vistas Django + plantillas Django) - Su funcin estratar los datos mediante objetos

    CONTROLADOR (el propio Django) - Establece lascomunicaciones

  • 8/4/2019 Seminario: Python+Django

    26/38

  • 8/4/2019 Seminario: Python+Django

    27/38

    Proceso de Servicio de una Pgina (II)

    1.- El USUARIO abre su cliente (Mozilla p. ej.) y abre una pginaweb.

    2.- El CLIENTE mediante el protocolo HTTP solicita alSERVIDOR (p. ej., un pc con Apache) la resolucin de una URL (lapgina correspondiente a dicha URL).

    3.- Apache detecta que la peticin corresponde a nuestra

    aplicacin y solicita al CONTROLADOR que tramite la peticin.

    4.- El controlador identifica la VISTA a la que corresponde lapeticin y delega en ella.

  • 8/4/2019 Seminario: Python+Django

    28/38

    Proceso de Servicio de una Pgina (III)

    5.- La VISTA utiliza el MODELO para conocer la estructura declases con las que va a trabajar y realiza la gestin de datos contrala base de datos usando ORM.

    6.- Al terminar la VISTA procesa los datos mediante unaPLANTILLA que devolvern como respuesta resultante cdigo [(X)HTML]+[CSS]+[Javascript] al SERVIDOR Apache.

    7.- El SERVIDOR le enviar como respuesta a su peticin HTTP elcdigo generado dinmicamente.

  • 8/4/2019 Seminario: Python+Django

    29/38

    Por qu funciona y cmoUn ejemplo prctico:

    Web Portal Literario 2.0Por:

    Ral Jimnez Ortega & Ral Lpez Campos

  • 8/4/2019 Seminario: Python+Django

    30/38

    Portal Literario 2.0 - Ejemplo prctico

    Esta es una aplicacin Open Source. Puedes encontrar el cdigo en: http://code.google.com/p/pdoweb

    http://code.google.com/p/pdowebhttp://code.google.com/p/pdowebhttp://code.google.com/p/pdoweb
  • 8/4/2019 Seminario: Python+Django

    31/38

    Orientacin a objetos y el PortalLiterarioLas 3 siguientes transparencias han sido incluidas despus de la presentacin por lo que no caern enel examen, pero para los que estn interesados voy a hacer otra reflexin acerca de la OO y esta

    aplicacin PortalLiterario.Las aplicaciones que forman una web son:

    La aplicacin servidor: que corre en la mquina donde se almacena la web (normalmente distintaa la del cliente) . La forman Servidor web(encargado de recibir los mensajes) y la aplicacindesarrollada.Y la aplicacin cliente: que corre en la mquina del visitante (gracias al intrprete del

    navegador)Y en nuestro caso se ejecutan del siguiente modo:

    El servidor web (por ej: IIS, Apache,..) se mantiene corriendo en la memoria RAM del servidory a la espera de mensajes durante todo el tiempo (normalmente 24h al da, 365 das al ao).La aplicacin servidor crea una instancia de la aplicacin cliente* como respuesta a la primerapeticin y esta es devuelta al visitante, para ser interpretada por en el navegador. Esta se

    mantiene viva en la RAM mientras el visitante tenga la pgina abierta (osea 2min, 10min, 3h, ..).

    *Esta aplicacin que es devuelta al visitante contiene la interfaz grfica y el cdigo de programacin(Javascript) que permite no slo ver sino tambin interactuar con la web. Javascript tambin seutiliza como soporte para la comunicacin mediante mensajes con el servidor.

  • 8/4/2019 Seminario: Python+Django

    32/38

    Orientacin a objetos y el PortalLiterarioEl protocolo de red utilizado para la comunicacin mediante mensajes usado en la web es HTTP yuna tcnica que nos permite el envo de mensajes si forzar la recarga completa de la pgina es

    AJAX (acrnimo de Asynchronous JavaScript And XML) .Y al igual que toda aplicacin se necesita un soporte fsico para almacenar los datos (datos delcliente, sus acciones, etc.). En la web se pueden utilizar tanto el cliente (mediante cookies) como elservidor (usando bases de datos, ficheros de texto plano, ficheros binarios, etc) para almacenarcierta informacin, aunque no es recomendable guardar informacin vital en el cliente por motivosde seguridad. y eficiencia.En cuanto al estado de los objetos, el estado del cliente se mantiene en la misma aplicacin delcliente y el estado de la aplicacin del servidor se tiene que almacenar en el soporte fsico ya quelos objetos creados en la peticin mueren al devolver la respuesta al servidor web*(Apache/IIS) encargado de devolver la respuesta al cliente (en formato JSON).*Existe en modo para usar Django para servir pginas pero es ms recomendable no usarlo

    http://www.json.org/json-es.htmlhttp://www.json.org/json-es.html
  • 8/4/2019 Seminario: Python+Django

    33/38

    Orientacin a objetos y el PortalLiterario

    Esto es todo, espero que haya aclarado un poco el comportamiento de esta aplicacin que est dotadade una combinacin de las ltimas y ms potentes tecnologas web actuales con el fin de crear una webms potente, rpida y estructurada:

    XHTML - Sirve como soporte para estructurar los contenidos y de puente entre los lenguajesCSS - Que permite establecer el diseo grficoJavascript + Framework ExtJS - Dota de autonoma a la aplicacin cliente

    Python + Framework Django - Ofrece un soporte potente y organizado para la resolucin depeticiones

  • 8/4/2019 Seminario: Python+Django

    34/38

  • 8/4/2019 Seminario: Python+Django

    35/38

    Bibliografa

  • 8/4/2019 Seminario: Python+Django

    36/38

    Bibliografa

    2 edicin del curso:Desarrollo rpido de aplicaciones

    Web 2.0 con Python y Django

    Impartido en Septiembre de 2007 por:Francisco Javier Nievas Muoz

    Miguel Hernndez MartosJos Carlos Calvo Tudela

    https://swad.ugr.es/?CrsCod=21https://swad.ugr.es/?CrsCod=21https://swad.ugr.es/?CrsCod=21https://swad.ugr.es/?CrsCod=21
  • 8/4/2019 Seminario: Python+Django

    37/38

    Otras referencias

    WikipediaBlog de GenBeta

    Algunos de los recursos han sido extraidos de lassiguientes fuentes:

    http://mundogeek.net/etiqueta/python/
  • 8/4/2019 Seminario: Python+Django

    38/38

    Bibliografa complementariaPython:

    Tutoriales sobre Python (ingls) | Metaclases en Python (castellano)Django:http://www.djangoproject.com/documentation(ingls)http://apress.com/book/view/1590597257 (libro)

    Ext JS:http://www.extjs-tutorial.com (Castellano)

    Ingls: API , Documentacin

    rbol sobre familia de tecnologas web

    http://www.modernlifeisrubbish.co.uk/article/web-tech-family-treehttp://www.modernlifeisrubbish.co.uk/article/web-tech-family-treehttp://www.modernlifeisrubbish.co.uk/article/web-tech-family-treehttp://extjs.com/deploy/dev/docs/http://extjs.com/learn/http://www.extjs-tutorial.com/http://www.extjs-tutorial.com/http://apress.com/book/view/1590597257http://apress.com/book/view/1590597257http://www.djangoproject.com/documentation/http://www.djangoproject.com/documentation/http://www.djangoproject.com/documentation/http://www.djangoproject.com/documentation/http://www.awaretek.com/tutorials.htmlhttp://crysol.inf-cr.uclm.es/node/600http://www.modernlifeisrubbish.co.uk/article/web-tech-family-treehttp://extjs.com/learn/http://extjs.com/deploy/dev/docs/http://www.extjs-tutorial.com/http://apress.com/book/view/1590597257http://www.djangoproject.com/documentation/http://crysol.inf-cr.uclm.es/node/600http://www.awaretek.com/tutorials.html