CGI python use "under a curse"
Steven D'Aprano
steven at REMOVE.THIS.cybersource.com.au
Mon May 7 01:30:29 EDT 2007
On Sun, 06 May 2007 21:30:16 -0700, Adrian Smith wrote:
> The support guy looked at it and gave me this:
>
> Traceback (most recent call last):
> File "python1.cgi", line 6, in ?
> print form["essay"].value
> File "/usr/local/lib/python2.4/cgi.py", line 559, in __getitem__ raise
> KeyError, key
> KeyError: 'essay'
>
> (http://www.profusehost.net/forum/support/10894-cgi-blink.html)
>
> He says I have a syntax error, though I'm b*ed if I can see where it
> could be. Can anyone here suggest anything?
Oh lordy lordy lordy, you've got one fine example of incompetence in
action.
>From the support forum:
[quote]
Quote:
perl python1.cgi
\Semicolon seems to be missing at python1.cgi line 3.
syntax error at python1.cgi line 4, near "form "
Execution of python1.cgi aborted due to compilation errors.
Quote:
perl -p python1.cgi
Semicolon seems to be missing at python1.cgi line 3.
syntax error at python1.cgi line 4, near "form "
Execution of python1.cgi aborted due to compilation errors.
[end quote]
The "administrator" John is trying to execute a Python script with Perl.
I notice that you pointed that out to him, and his response was:
[quote]
Sorry for delay. if we try to run this script by python we will get same
error.
python -t python1.cgi
Content-type: text/html
Traceback (most recent call last):
File "python1.cgi", line 6, in ?
print form["essay"].value
File "/usr/local/lib/python2.4/cgi.py", line 559, in __getitem__
raise KeyError, key
KeyError: 'essay'
we can test perl or cgi scripts using perl command.
PLease fix syntax error so it will work fine.
[end quote]
It is NOT the same error. There are NO syntax errors in the script, there
is a runtime error. The so-called administrator is wrong: you can't use
Perl to test just any old CGI scripts. They have to be written in Perl.
I see from the source code on your page that you have a line:
<TEXTAREA NAME="essay" COLS=60 ROWS=20 WRAP=HARD></TEXTAREA>
You have two lines in your cgi script:
form = cgi.FieldStorage()
print form["essay"].value
Having never done cgi programming, I'm not sure what the problem is, but
after reading help(cgi) I'll take a stab in the dark and say try this:
print form.value
It might also help for you to try this:
print form.keys()
Good luck with the "admins" at your hosting company.
--
Steven.
More information about the Python-list
mailing list