can't load an script from html...

Peter Otten __peter__ at web.de
Sat Sep 24 08:48:29 CEST 2011


Ricardo wrote:

> Hi everyone
> I'm trying to use the cgi library to create a python script and loading it
> from a web page. I have already done the necessary imports, and the
> default commands to receive data from "html" are written too. The final
> version is something like this:
> 
> #!/usr/bin/python
> 
> import subprocess
> import cgi
> import cgitb
> 
> cgitb.enable()
> 
> input = cgi.FieldStorage()
> 
> …. my code (do something with input)….
> 
> 
> #printing the response
> 
> print "Content-Type: text/html"
> print
> print "<TITLE>My title:</TITLE>"
> print "</HEAD>"
> print "<BODY>"
> print ….. bla bla …
> print "%s"%theoutput
> print "</BODY>"
> 
> Besides, my call from my index.html is like this:
> 
>  <form action="/scripts/python_script.py" method="post">
>       <input name="inid" type="text" size="20" class="input" /><br/><br/>
>         <input type="submit" value="accept"  class="button"/>
>  </form>
> 
> well, the thing is that when i do the call from the browser:
> 
> http://localhost/index.html
>            |
>           V
> put the data and click on the "accept" button
>            |
>           V
> http:/localhost/scripts/python_script.py
> 
> I only get the python_script.py as a plain test by response (the script
> printed on my browser). I have already changed the permissions for
> python_script.py. I have checked the import cgi,cgitb in the python shell
> (i am using v2.7) and they work fine. So, i don't know what it is going
> wrong here.
> 
> A little help please… any idea?

Is your webserver configured to allow cgi scripts? In the scripts directory? 
For Apache see

http://httpd.apache.org/docs/current/howto/cgi.html

Python also comes with a CGI Server. A quick-and-dirty setup goes like this:

$ cat cgi-bin/script.py
#!/usr/bin/python
# -*- coding: utf-8 -*-

import cgi
import cgitb

cgitb.enable()

input = cgi.FieldStorage()

print "Content-Type: text/html"
print
print "<TITLE>My title:</TITLE>"
print "</HEAD>"
print "<BODY>"
print "Hello world"
print "</BODY>"
$ chmod a+x cgi-bin/script.py
$ python -m CGIHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...

If you then point your browser to http://localhost:8000/cgi-bin/script.py 
you should see 

Hello world 

in the browser and (something like)

localhost - - [24/Sep/2011 08:41:27] "GET /cgi-bin/script.py HTTP/1.1" 200 -

in the shell. Note that the script must be in cgi-bin (or htbin) unless you 
start the server with a custom script that modifies 
CGIHTTPRequestHandler.cgi_directories accordingly.




More information about the Python-list mailing list