Desarrollo Web.

Chema Cortes py en ch3m4.org
Lun Mar 29 16:53:01 CEST 2004


Pedro Baldanta escribió:

> Ahora lo que me interesaría es que me informen del
> modelo a seguir para realizar la aplicación en python.

Antes de empezar, aclararte que python cuenta con una gran librería 
estándar suficiente para realizar aplicaciones web tanto en cliente como 
servidor, tanto para hacer páginas webs como servicios web. Según cuál 
sea tu idea, es posible combinar python con otros servidores web como 
apache, ó integrarse con un sistema java (si necesitas java, puedes 
echar un vistazo a jython (www.jython.org) como una implementación de 
python para JVM).

En fin, que las alternativas son muchas y variadas.

> Tengo claro que quiero separar la lógica del negocio
> de la lógica de la presentación. He oido una serie de
> terminos que pueden ser interesantes y me gustaría que
> me explicasen someramente su uso:
> 
> Webware
> mod_python vs CGI
> cheetah


Uffff. Si empezamos con explicaciones "someras" no acabaríamos nunca. Lo 
mejor es que vayas a la colección de referencias más completa:
http://www.python.org/cgi-bin/moinmoin/WebProgramming

Ya te han hablado de webware y cheetah. Del "mod_python" decirte que, 
por sí mismo, no es nada intuitivo y que no está preparado para separar 
la lógica de la presentación. Lo mejor es utilizarlo para procesar 
plantillas como hace el PyHP (python empotrado en html al estilo PHP) ó 
el Jotweb (plantillas ZPT estilo zope).

CGI es una buena alternativa, y no tan lenta como siempre se dice. 
Depende de qué sistema operativo y servidor web emplees. Para apache 
puedes utilizar fastcgi (ó algún tipo de permanentCGI) que acelera 
bastante la ejecución del CGI a costa de emplear más recursos de la 
máquina. Hay algunos sistemas CGI que separan lógica y presentación como 
"slither" (www.slither.info) del que puedes encontrar un libro bastante 
bueno ("Web programming in Python").

Aunque es dificil recomendarte un sistema, el zope es casi una 
obligación, sobre todo ahora que acaba de salir la versión zope2.7 
bastante mejorada en rendimiento, y con gran soporte por parte de la 
comunidad (incluso en español). Es un sistema complemente orientado a 
objeto, con su propio sistema gestor, una sólida base de datos 
jerárquica, una colección enorme de productos utilizables, y que puede 
usarse tanto para construir aplicaciones web como servicios web 
(xmlrpc). Su sistema de plantillas (ZPT) cumple con los estándares xml, 
y facilita mucho la separación de lógica de presentación.

Si quieres de momento algo más sencillo para iniciarte, te recomiendo 
que eches un vistazo a CherryPy (www.cherrypy.org). Es fácil de hacerse 
con él, y posee una de las mejores introducciones a la programación de 
aplicaciones web en python que puedes encontrar. Está orientado a 
objetos, permite una separación de lógica y presentación, y tiene 
algunas características que no se encuentran fácilmente en otros 
sistemas. Y lo sorprendente es que el resultado final es tan 
trasportable como un único fichero python que puede ejecutarse sin más 
en cualquier sistema (incluso desde jython).

Tampoco te olvides de echar un vistazo al "twisted" 
(http://www.twistedmatrix.com)

> ¿Qué base de datos tiene buen enlace con Python?

Todas, aunque para ser justos habría que destacar postgres por permitir 
almacenar procedimientos escritos en python. Se puede decir que tienes 
asegurada la conectividad con cualquier base de datos que soporte ODBC ó 
JDBC.

La elección de una base de datos no es un tema demasiado preocupante en 
python ya que su uso está unificado a través de la llamada DB-API 
(actualmente, en versión 2), siendo muy fácil pasar de una base de datos 
a otra.

Zope incluye sus propios conectores a bases de datos que quedan 
integrados dentro del esquema general de seguridad del servidor.

Como anecdótico, hay que decir que python incluye ya de serie la 
BerkeleyDB4, aunque no es relacional. También que existe una base de 
datos, 'gadfly', que está completamente implementada en python.

> ¿Sistema de plantillas?

ZPT (zope), y CHTL/CGTL (cherrypy)




Más información sobre la lista de distribución Python-es