Mas problemas con el Cherrypy
Chema Cortes
py en ch3m4.org
Lun Jun 2 10:01:57 CEST 2003
Adrian Ferreres Esteller escribió:
> Tengo otro problemilla con el Cherrypy. Cuando programo y detecto un
> error, despues de corregirlo, compilar de nuevo los archivos .cpy y
> cargar de nuevo el servidor me sigue dando el mismo error. Supongo que
> sera que despues de lanzar el servidor de Cherrypy algo se quedara por
> ahi residiendo en algun lugar. ¿Alguien sabe de alguna orden para que
> esto no vuelva a pasar?
No debería sera así. Si cortas la ejecución del servidor (CTRL-C en
linux, CTRL-Inter en windows), el servidor se para totalmente sin dejar
nada residente. Comprueba que el compilado ha ido bien, no sea que estés
volviendo a lanzar siempre el mismo .py
> Luego me gustaria consultaros otra cosa. He hecho otro programa de
> Cherrypy que es el siguiente:
>
> use Cola_Tecnico
> CherryClass Seleccion_cola:
>
> mask:
> def index(self,colas=1):
> <HTML>
> <BODY>
> <H3>Seleccion de averia</H3>
> <FORM py-attr="request.base" ACTION="" METHOD=GET>
> <SELECT NAME=colas>
> <OPTION SELECTED VALUE=1> cola1
> <OPTION VALUE=2> cola2
> <OPTION VALUE=3> cola3
> <OPTION VALUE=4> cola4
> <OPTION VALUE=5> cola5
> <OPTION VALUE=6> cola6
> </SELECT>
> <INPUT TYPE=SUBMIT VALUE="Aceptar">
> </FORM>
> <py-exec="cola_Tecnico.actualiza_cola(colas)>
> </BODY>
> </HTML>
>
> En este programa se da algo muy extraño. Cuando aprieto el boton
> "Aceptar" para dar un nuevo valor a la variable "colas" resulta que me
> da un error diciendome que la funcion index no tiene declarado que se le
> pase ninguna variable colas, sinembargo, cuando se carga la pagina por
> primera vez si que se le pasa el valor de colas al metodo
> "cola_Tecnico.actualiza_cola" por lo tanto bien que es reconocida la
> variable "colas" dentro de la función. Un error que he pensado que
> podria ser es que la colas del SELECT y la colas del index no sean del
> mismo tipo pero esto no creo que sea el problema pues segun tengo
> entendido python genera las variables de forma dinamica. ¿Alguien me
> podria hechar una mano? Muchas Gracias
Cuando en el formulario pones simplemente 'request.base', la llamada se
redirige automáticamente a request.base+'/root/index'. Prueba con algo
más explícito:
<FORM py-attr="request.base+'/seleccion_cola/index" ACTION="" METHOD=GET>
Con lo de los tipos de datos, ten en cuenta que los argumentos que
recibes con los métodos GET y POST son siempre de tipo "string", lo que
podría darte algún error en las comparaciones con números y otros tipos
de datos. En tu caso, en la primera ejecución del index el valor por
defecto 'colas=1' hace de 'colas' un número entero. Pero en las
siguientes invocaciones, después del pulsar el botón de aceptar, el
argumento 'colas' será de tipo string ("1", "2", "3",...).
Más información sobre la lista de distribución Python-es