Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Download
Standard view
Full view
of .
Save to My Library
Look up keyword
Like this
11Activity
0 of .
Results for:
No results containing your search query
P. 1
Python Ajax

Python Ajax

Ratings: (0)|Views: 103 |Likes:
Published by Mauro Miguel Melo

More info:

Published by: Mauro Miguel Melo on Mar 22, 2010
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

03/13/2013

pdf

text

original

 
La nueva tecnología web.
AJAX
Python •
DESARROLLO
53
Número 12
WWW.LINUX
-
MAGAZINE.ES
de campos o el arrastrar y soltar, queeran imposibles en la Web.Conforme avanzaba el tiempo nume-rosas empresas y personas proponíansoluciones. La lista es interminable: JavaScript, Java Applets, ActiveX, Tcl,VBScript, Macromedia Flash…Pero todas fallaban de uno u otramanera. En el caso de Java, para ejecutarel Applet necesitabas tener instalado el Java Runtime Environment, y la mayoríade los usuarios no sabían ni qué eraaquello que se le pedía. Lo mismo ocu-rría con Macromedia Flash.Lo peor era que cuando estaba solu-cionado el tema de la instalación delsoftware adecuado, los desarrolladorescreaban, y crean, páginas horribles lle-nas de cosas moviéndose que distraen eirritan. Se sentían impulsados a usarhasta la última capacidad de las nuevasherramientas y acababan generandomonstruosidades.Esta fase ya casi ha pasado y ahora sebusca la sencillez, y en el momento justosurgió AJAX. Para más información verurl [2] de la tabla Referencias.
A
Brave New World” (“Un MundoFeliz”) es el nombre de la famo-sa novela de Aldous Huxley, enella nos muestra un mundo distinto yaterrador pero que parecía, y parece,cada vez más cercano.Nosotros no tenemos una visión tanpesimista del mundo, pero es probableque ese título (que se podría traducirliteralmente por «un nuevo y desafiantemundo») explique todo el revuelo queestá levantando AJAX. El término fueacuñado por Jesse James Garrett en elartículo [1] de la tabla Referencias.Durante mucho tiempo las GUIs, lasInterfaces Gráficas de Usuario, handominado la informática. La gente quetrabajaba en la Web siempre estabaintentando convencer a todo el mundode que para la mayoría de los programas,un interfaz web bastaba. Pero los usua-rios estaban acostumbrados a ciertascaracterísticas, como el auto-completado
Internet Explorer, a pesar de ser el pri-mero que introdujo
XMLHTTPRequest 
,es el que más problemas da en su uso.El código aquí mostrado ni siquiera fun-ciona en IE debido a que en él se haceuso de un componente ActiveX paraestablecer la conexión.Existen numerosas técnicas para permi-tir la compatibilidad entre navegadores,pero debido a la extensión del artículo ya su complejidad no las hemos mostra-do. El lector interesado en la compatibili-dad puede estudiar el código de siste-mas de código libre que implementanAJAX como puede ser
Sarissa 
. Vea lareferencia [3] en la tabla Recursos.
Los problemas con IE
AJAX es la palabra de moda,Google usa AJAX, Yahoo usaAJAX… todo el mundo quiereusar AJAX pero ¿lo usas tú? ymás importante aún ¿quédemonios es AJAX?
POR JOSÉMAARUIZYPEDROORANTES
053-060_PythonL12 16.11.2005 9:01 Uhr Página 53
 
posibilidad de traer información al nave-gador
sin recargar la página
.Esto es útil para algunas tareas pero nodemasiado, ya que a nuestro puzzle lefaltan piezas. La primera pieza es laadopción de esta librería por casi todoslos navegadores, por lo tanto el códigopasa a ser de aplicación universal.Además resulta que podemos modifi-car el contenido de la página en tiemporeal usando el denominado árbol DOM.Y por si fuese poco, cuando AJAX fuedefinido, los programadores comenzarona usar protocolos XML para comunicarsecon los servidores.¿Qué quiere decir esto? Pues queahora, con AJAX, podemos cargar unapágina y, sin tener que recargarla, traer-nos información, modificar la página entiempo real, e interactuar con servidoresremotos usando protocolos XML.Básicamente, una vez cargada la páginaweb tenemos entre manos todas las posibi-lidades de programación de un GUI tradicio-nal. Y todo esto sin necesidad de plugins niinstalaciones, toda esta tecnología está ennuestros navegadores esperando ser usada.
¿Cómo encaja Python?
Pues vamos a realizar un pequeño servi-dor de contenidos en Python que puedaser consultado usando AJAX. Crearemosuna web con algo de código Javascriptque a intervalos accederá a nuestro ser-vidor Python y modificará el aspecto dela página web.
Los 5 Ingredientes
Los cinco ingredientes necesarios paraelaborar nuestro producto son CSS, Javascript, HTML, XML y Python, comoaparecen en la figura 1, y cada uno tienesu función en esta obra.HTML es la base sobre la que vamos atrabajar, definimos una página web en laque todo ocurrirá. De hecho, con el pasodel tiempo el propio HTML ha acabadoconvirtiéndose en una especie de planti-lla donde campan a sus anchas CSS y Javascript.CSS nos permite otorgar propiedadesvisuales a los elementos de HTML. Javascript es el encargado de actuar enla máquina cliente, en el navegador, ypuede modificar tanto el HTML como laspropiedades visuales que CSS define.Con la llamada
 XMLHttpResponse
susatribuciones se han disparado. Ahora seve como un lenguaje de programación depleno derecho. En los próximos añospuede que adquiera mucha más impor-tancia de la que ha tenido hasta ahora.
¿Pero qué esAJAX?
Muy buena pregunta. Locierto es que AJAX haestado delante de nues-tras narices todo eltiempo, esperando aque alguna mente des-pierta lo redescubriese.El acrónimo «AJAX» secompone de las pala-bras «Asynchronous JavaScript and XML»,término acuñado por Jesse James Garrett, ycuriosamente su existen-cia se debe a una de esasfamosas violaciones de losestándares que suele realizar Microsoftcon sus productos.Allá por 1998, Microsoft introdujo den-tro de sus productos una librería que lepermitía hacer consultas usando el proto-colo HTTP de manera autónoma y asín-crona. Cuando tu navegador accede a unapágina y esta contiene código Javascript,este código a su vez puede traer informa-ción de esa u otras páginas de maneraindependiente. Si además se hace que estecódigo permanezca en ejecución respon-diendo a eventos tenemos entre manos la
DESARROLLO
• Python
54
Número 12
WWW.LINUX
-
MAGAZINE.ES
01 #!/usr/local/bin/python0203 import BaseHTTPServer04 import os05 import cgi0607 class AJAXHTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):08 """09 Responde a peticiones HTTP10 """11 def do_GET(self):12 "Gestiona los GET"1314 acciones = {15 "/" :["envia_fichero","index.html"],16 "/ps.xml" :["envia_comando", "ps afx"],17 "/df.xml":["envia_comando", "df"],18 "/who.xml":["envia_comando","who"],19 "/uname.xml":["envia_comando","uname -a"]}2021 if self.path in accio-nes.keys():22 accion = accio-nes[self.path]23(getattr(self,accion[0]))(self.path,accion[1])24 else:25 if (self.path[-3:]== ".js" or26 self.path[-4:]== ".css"):27self.envia_fichero("",self.path[1:])2829 else:30self.envia_fichero("","404.html")3132 defenvia_fichero(self,ruta,fiche-ro):33 # No usamos ruta, peroasí simplificamos el código34 p = Pagina(fichero)35 self.enviar_respues-ta(p.tipo(), p.contenido())3637 defenvia_comando(self,ruta,coman-do):38 c = Comando(comando)39 self.enviar_respues-ta(c.tipo(), c.contenido())4041 def enviar_respuesta(self,tipo, contenido):42self.enviar_cabecera(tipo)43 self.wfile.write(con-tenido)4445 def enviar_cabecera(self,tipo):46 self.send_respon-
Listado 1: fichero server.py
053-060_PythonL12 16.11.2005 9:01 Uhr Página 54
 
053-060_PythonL12 16.11.2005 9:01 Uhr Página 55

Activity (11)

You've already reviewed this. Edit your review.
1 hundred reads
hacy58 liked this
aljomori liked this
jsystemr liked this
Pablo Santana liked this
angelfire_507 liked this
akba__ liked this
Jose Salazar liked this
Jose Salazar liked this

You're Reading a Free Preview

Download
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->