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