[Python] Baco di cgi o mio?

Pietro Battiston toobaz a email.it
Sab 9 Maggio 2009 09:31:18 CEST


Il giorno sab, 09/05/2009 alle 08.32 +0200, Roberto De Ioris ha scritto:
> On Fri, 2009-05-08 at 17:06 +0200, Pietro Battiston wrote:
> > Il giorno ven, 08/05/2009 alle 16.57 +0200, Zanon Samuele ha scritto:
> > > non credo che funzioni perchè il comando non viene eseguito al seguito
> > > dell'invio di un form...
> > 
> > Veramente lo stesso identico problema lo ho in un cgi che ha appena
> > ricevuto un form bello pieno, e l'ho riprodotto in due linee di script
> > solo per comodità. Se fai un "print cgi.FormContentDict()", ottieni un
> > pacifico "{}".
> > 
> > grazie comunque, ciao
> > 
> > Pietro
> > 
> 
> 
> 
> Non puo' funzionare da shell in quanto le variabili CGI semplicemente
> non sono definite (le puoi definire a mano nella linea di comando, sono
> banali variabili d'ambiente).

Ma infatti mi restituisce un oggetto che come metodi e rappresentazione
assomiglia del tutto ad dizionario vuoto...

(mentre se ad esempio provo a consultare dei cookie da shell - senza
avere impostato le variabili d'ambiente - allora ho sì problemi, per
quel che riguarda i form sembra comportarsi - tranne appunto questo
errore - bene, dicendo semplicemente "non ci sono dati inseriti")

> Il problema e' come mai non ti funziona
> online.

Yes.

> 
> Se il cgi che usi online e' lo stesso che passi alla shell allora non
> puo' funzionare perche' non stai stampando gli header. 

Nono, il tutto accade in un cgi che senza quella riga non dà problemi.

> 
> Usa sempre cgitb al posto di cgi almeno hai gli errori stampati
> direttamente sul browser.


Lo fo, e ricevo esattamente lo stesso "KeyError" che ricevo da shell.


> 
> 
> Ti consiglio comunque di leggerti una introduzione al protocollo cgi, e'
> davvero banale ma se non si conoscono quei 3-4 concetti ci si puo'
> bloccare facilmente.
> 

Sìsì, ma a parte questo problema particolare sto andando abbastanza a
gonfie vele.

Allego un programma minimale per testare il baco (come cgi,
eventualmente): il ciclo scritto da me stampa correttamente i nomi delle
variabili (ed è il modo in cui oggi sono riuscito a bypassare il
problema, sebbene con un pochettino di "frustrazione intellettuale"),
mentre l'ultima riga, se decommentata, produce l'errore, che scaturisce,
nelle stesse condizioni, anche sul python 2.4 di Aruba.

Insomma, se mi dite "nell'altro modo funziona, smetti di lamentarti" la
smetto, ma a me sembra tanto un baco...

ciao

Pietro



#! /usr/bin/python
# -*- coding: utf-8 -*-

import cgi
import cgitb
cgitb.enable()

print "Content-type: text/html\n"

print cgi.FormContentDict()

i = cgi.FormContentDict().iterkeys()

while True:
    try:
        print i.next()
    except:
        break

#print [i for i in cgi.FormContentDict()]



Maggiori informazioni sulla lista Python