Running CGI from within CGI

R

rodmc

I am new to using Python as a CGI platform, so please excuse me if
this is a dumb question.

Anyway I have written a series of web forms (with Python scripts)
which allow the user input but also retrieve data from a database. The
data entry stage works fine however retrieving data is a little more
tricky. However I need to find a way to call the scripts directly from
within other CGI's. At present when I go to the next page I call the
normal HTML page as below:

p = open('somefile.html')
some = p.read()
p.close()
print some


However I would like to execute a script instead so calling for
example myscript.py - thus populating the existing forms with data.
This does not seem to work when I modify the above method. Is there
another way to do it? Thanks in advance.

Kind regards,

rod
 
B

Bruno Desthuilliers

rodmc a écrit :
I am new to using Python as a CGI platform, so please excuse me if
this is a dumb question.

Anyway I have written a series of web forms (with Python scripts)
which allow the user input but also retrieve data from a database. The
data entry stage works fine however retrieving data is a little more
tricky. However I need to find a way to call the scripts directly from
within other CGI's. At present when I go to the next page I call the
normal HTML page as below:

p = open('somefile.html')
some = p.read()
p.close()
print some


However I would like to execute a script instead so calling for
example myscript.py - thus populating the existing forms with data.
This does not seem to work when I modify the above method. Is there
another way to do it? Thanks in advance.

The QuickAndDirtyWay(tm) would be to use execfile IIRC. But since you
*don't* want to do it that way, the best thing to do would be to factor
out common code into functions in a distinct module (or in as many
modules as needed), then rewrite your cgi scripts so they import the
relevant modules and call the appropriate functions.

And while we're at it, I'd greatly recommand giving a look at the
various templating packages around (may I recommand Mako ?) and the
FormEncode package for HTTP forms conversion/validation ?

HTH
 
R

rodmc

Thanks for the details, is execfile full of security issues or
something?

You are right about exploring templates, I may explore that later.
However I need to integrate the forms in with another system, which
will not be using templates. I suspect I may have taken the long way
round but I suppose it also means I learn a little more Python :)

Cheers,

rod
 
B

Bruno Desthuilliers

rodmc a écrit :
(top-post corrected - rod, please learn to quote, thanks !-)
> Thanks for the details, is execfile full of security issues or
> something?

I don't think it has any peculiar problem wrt/ security, but it's plain
butt-ugly, and certainly a nightmare when it comes to readability and
maintainability.

FWIW, I never ever used execfile myself. My scripts (I mean, the .py
intended to be use as 'entry points', either on command line, CGI or
whatnot) have very few code at the top-level, almost only imports,
functions / classes / symbols definitions, and the canonical guard for
the effective entry point, ie:

# somescript.py
<imports here>
<globals and constants here>
<classes and/or functions here>

if __name__ == '__main__':
# been called as script, not imported as module, so let's proceed
<handle sys.args and whatnot>
<call relevant functions>
<output something>



HTH

(snip about templates, not relevant here)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top