#!/usr/bin/python # showpage.cgi : The top-level driver for our development framework import os, sys # Ensure that a path has been provided if not os.environ.has_key('PATH_INFO'): print "Content-type: text/html\n" print "<P>No path information provided for showpage.cgi." sys.exit(0) # Determine the root of the server's document tree try: doc_root = os.environ['DOCUMENT_ROOT'] except KeyError: doc_root = '/www/' # os.path.join combines a path and a filename and returns # the resulting filename. filename = os.environ['PATH_INFO'] filename = os.path.join(doc_root, filename[1:] ) # Set up the import cgi headers = {'Content-type':'text/html'} webvars = cgi.FieldStorage() namespace = { 'headers': headers, 'webvars': webvars, 'environ': os.environ } import StringIO real_stdout = sys.stdout sys.stdout = StringIO.StringIO() try: execfile(filename, namespace) except: # The page's code raised some sort of exception. # Write information about the crash to a file, and output # an error page real_stdout.write("""Content-type: text/html <P>The site is having technical difficulties with this page. An error has been logged, and the problem will be fixed as soon as possible. Sorry!""") import traceback, time sys.stderr.write('Error while executing script %s\n' % (filename) ) traceback.print_exc(file=sys.stderr) sys.exit(0) else: for header, value in headers.items(): real_stdout.write("%s: %s\n" % (header, value) ) real_stdout.write('\n') real_stdout.write( sys.stdout.getvalue() )
A CGI Framework in Python (Web Techniques, Feb 1998)
Related Reading
More Insights
INFO-LINK
To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy. | |