Upload
aprender-libre
View
263
Download
0
Embed Size (px)
Citation preview
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.com8/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/Metaclase8/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%A1nticas8/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/pdoweb8/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.html8/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=218/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