» Cheetah y mod_python

16/07/2009
Veamos un ejemplo de Cheetah en un Apache, para ello usaremos Mod_python.
Este artículo lo he preparado porque "fer" me preguntó sobre Cheetah y Mod_python para apache, espero que sea suficiente para él y para todos los lo lean después!
 

Configurar Apache

Comenzaremos preparando el archivo .htaccess de nuestro servidor web, lo editamos e incluimos en este las siguientes líneas.
 
AddHandler mod_python .py
PythonHandler index
PythonDebug On 
 
Doy por sentado que ya tienes instalado el módulo mod_python en apache, si no es el caso, comienza por ahí.
 

Prueba inicial

Creamos un fichero en nuestro directorio llamado index.py, e introducimos en él
 
 from mod_python import apache
 
 def handler(req):
	req.content_type = 'text/plain'
	req.write("Hello World!")
	return apache.OK    

Todo script llamado por mod_python deberá contener una función llamada "handler" que será la encargada de generar los contenidos y devolverlos. El script se llama "index.py" porque en .htaccess lo hemos puesto así, pero podría llamarse de cualquier otra forma, incluso podrías preparar una especie de "handler" que cargue otros scripts creados por tí según el contenido que se le indique.
Abre la página que se llamará (por ejemplo): http://localhost/index.py

Este deberá generar un bonito "hello world", sino es así, por favor, acude a la documentación del proyecto mod_python (en) y sigue la documentación para configurar correctamente el módulo mod_python.

Adaptando el script websafe

 
Ahora que funciona mod_python y que nuestro index.py genera la página vamos a meterle el código de mi anterior artículo Plantillas con Cheetah, este generará una página HTML con los colores web que se consideran fiables en todos los navegadores.

from mod_python import apache
from Cheetah.Template import Template 
 
def handler(req):
	req.content_type = 'text/html'
	req.write(generaWebSafeColors(req))
	return apache.OK
 
def generaWebSafeColors(req): 
  	colores = []
  	tmp = []
  	for x in range(0,256, 51):
  		for y in range(0,256, 51):
  			for z in range(0,256, 51):
  				tmp.append("rgb(%d, %d, %d)" % (x, y, z))
  			colores.append(tmp)
			tmp = []
 
	return str(Template(file='/var/www/websafecolors.tmpl', searchList=[{'colores': colores}]))  
 
Si te fijas en el script, este abre un archivo llamado "websafecolors.tmpl" situado en /var/www/, corrige la ruta si es necesario, aquí tienes su contenido.
 
<html>
<head>
<style>
  td { width: 10px; height: 5px;}
</style>
</head>
<body>
<h1>Tabla de colores WebSafe</h1>
<table cellspacing='0'>
#for $row in $colores
	<tr>
	#for $color in $row
		<td style='background-color: $color'></td>
	#end for
	</tr>
#end for
</table>
</body>
</html> 
  

Probalotodo

Fer se ha autoproclado probalotodo del ukablog, así que si ves que falla algo no dudes en pedirle explicaciones, si lo necesitas, estaré encantado de darte su correo electrónico, así podré quitar de una vez el pipe que tengo para los comentarios desagradbles, ya sabes, cat "insulto" > /dev/null.
 

Configurar Apache

Comenzaremos preparando el archivo .htaccess de nuestro servidor web, lo editamos e incluimos en este las siguientes líneas.
 
AddHandler mod_python .py
PythonHandler index
PythonDebug On 
 
Doy por sentado que ya tienes instalado el módulo mod_python en apache, si no es el caso, comienza por ahí.
 

Prueba inicial

Creamos un fichero en nuestro directorio llamado index.py, e introducimos en él
 
 from mod_python import apache
 
 def handler(req):
	req.content_type = 'text/plain'
	req.write("Hello World!")
	return apache.OK    

Todo script llamado por mod_python deberá contener una función llamada "handler" que será la encargada de generar los contenidos y devolverlos. El script se llama "index.py" porque en .htaccess lo hemos puesto así, pero podría llamarse de cualquier otra forma, incluso podrías preparar una especie de "handler" que cargue otros scripts creados por tí según el contenido que se le indique.
Abre la página que se llamará (por ejemplo): http://localhost/index.py

Este deberá generar un bonito "hello world", sino es así, por favor, acude a la documentación del proyecto mod_python (en) y sigue la documentación para configurar correctamente el módulo mod_python.

Adaptando el script websafe

 
Ahora que funciona mod_python y que nuestro index.py genera la página vamos a meterle el código de mi anterior artículo Plantillas con Cheetah, este generará una página HTML con los colores web que se consideran fiables en todos los navegadores.

from mod_python import apache
from Cheetah.Template import Template 
 
def handler(req):
	req.content_type = 'text/plain'
	req.write(generaWebSafeColors(req))
	return apache.OK
 
def generaWebSafeColors(req): 
  	colores = []
  	tmp = []
  	for x in range(0,256, 51):
  		for y in range(0,256, 51):
  			for z in range(0,256, 51):
  				tmp.append("rgb(%d, %d, %d)" % (x, y, z))
  			colores.append(tmp)
			tmp = []
 
	return str(Template(file='/var/www/websafecolors.tmpl', searchList=[{'colores': colores}]))  
 
Si te fijas en el script, este abre un archivo llamado "websafecolors.tmpl" situado en /var/www/, corrige la ruta si es necesario, aquí tienes su contenido.
 
<html>
<head>
<style>
  td { width: 10px; height: 5px;}
</style>
</head>
<body>
<h1>Tabla de colores WebSafe</h1>
<table cellspacing='0'>
#for $row in $colores
	<tr>
	#for $color in $row
		<td style='background-color: $color'></td>
	#end for
	</tr>
#end for
</table>
</body>
</html> 
 

Nombrado el probalotodo del UkaBlog

Fer se ha ofrecido como probalotodo del ukablog, así que si véis que algo no funciona me enviáis un comentario y os paso su correo, así podré por fin quitar el pipe que tenía puesto, ya sabes, el: cat "insulto" > /dev/null, ahora será un lindo  cat "problemas" > /dev/fer. 

Pon un nick:

Y ahora tu comentario:



Este símbolo © lo he puesto para que no le hagas ni caso, siéntete libre de plagiar lo que te plazca.
login