Referencia de variables enviadas con post o get

vicente villaveces jvicentevilla en yahoo.es
Jue Jul 12 23:22:34 CEST 2007



Gerardo Juarez <gerardo en computo-industrial.com.mx> escribió: 
Desde que puse mi respuesta me quede con la duda, pero ya la verifique con 
un programa que tengo que funciona. "value" es un atributo, no un metodo.
Por lo tanto, no lleva los (): 

cedula = form['cedula'].value

Mi receta inicial tenia el error y en tu script usas las dos formas. La 
primera form['cedula'].value no te da error y la segunda si.
Ahora la excepcion KeyError no corresponde a que "form" no tenga la llave
"cedula", que ya probaste previamente en el "if", sino a que 
form['cedula'], que es un diccionario en si mismo, no tiene un metodo
"value()", si bien *si* tiene un atributo "value".

saludos
Gerardo

           >Saludos .  gracias Sr. Gerardo, ya se pudo recobrar el valor de la variable cedula, leyendo la documentaciòn de python, encontré un ejemplo del método  form.getvalue() y lo adapte quedando:

 cedula =form.getvalue("cedula")

     Con lo que tengo el valor de la variable,pero al usarla para establecer un filtro en la tabla no recupera la  fila coincidente a pesar que la cedula que recupero está en la tabla, posiblemente especulo que tal vez sea que en la condición del filtro de la sentencia SQL, se tome la variable por su nombre  no por su valor o será que existe otra forma de hacer el filtrado la cual desconozco. anexo el codigo.                     


#!/usr/bin/env python


#######################################################
# runs on the server, reads form input, prints html
#######################################################
     
import cgi, sys, pg
import  cgitb; cgitb.enable () 

form = cgi.FieldStorage()

if not (form.has_key("cedula")):
    print "<H1>Error</H1>"
    print "Por favor ingrese su cedula."
    



db = pg.connect('datos', 'localhost', 5432, user= 'postgres', passwd= 'jose123456')
#form = cgi.FieldStorage()            # parse form data
print "content-type: text/html"      # plus blank line

##########
html = """
<TITLE>solbecas</TITLE>
<H1>SALUDOS</H1>
<H1>Esta página ha sido realizada  con la metodologia Server-side Scripting, en el lenguaje de programación Python, en respuesta a un formulario enviado desde otra página realizada con Html</H1>
<HR>          </HR>

<p>%s</p>
HR>"""


 
if not form.has_key('cedula'):
    print html % ("Ingrese su número de cedula por favor")
    
else:
        print html % ("Su número de cédula, %s." % form['cedula'].value)
        
print """<P>
        

        <P>
        <CENTER>
        <TABLE BORDER=3>
        <CAPTION>BASE DATOS ESTUDIANTES</CAPTION>
        <TR>
        <TH>CEDULA</TH>
        <TH>NOMBRE</TH>
        <TH>EDAD</TH>"""


cedula = form.getvalue("cedula")

print cedula


for r in db.query("""SELECT * FROM estudiantes where cedu ='cedula'""").dictresult():
     print '''<tr>
   <td>%(cedu)s</td>
   <td>%(nomb)s</td>
   <td>%(edad)s</td>
</tr>''' % r


print "</table></center></p></body></html>"


     
print 'fin de programa'


                                         Gracias.
"Que viva el software libre y los hombres que lo liberan"

                                                                     Jose Vicente Villaveces.


       
---------------------------------

Sé un Mejor Amante del Cine
¿Quieres saber cómo? ¡Deja que otras personas te ayuden!.




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