summaryrefslogtreecommitdiff
path: root/examples/wsgi/run_wsgi.py
blob: 029e2400756d36947be1ed12000d87b3eec327df (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
from wsgiutils import wsgiServer
import cgi, sys
from mako.lookup import TemplateLookup
from mako import exceptions

lookup = TemplateLookup(directories=['./'], filesystem_checks=True)

def serve(environ, start_response):
    fieldstorage = cgi.FieldStorage(
            fp = environ['wsgi.input'],
            environ = environ,
            keep_blank_values = True
    )
    d = dict([(k, f[k]) for k in fieldstorage])
    uri = environ.get('PATH_INFO', '/')
    
    try:
        template = lookup.get_template(uri)
        start_response("200 OK", [('Content-type','text/html')])
        return [template.render(**d)]
    except exceptions.TemplateLookupException:
        start_response("404 Not Found", [])
        return ["Cant find template '%s'" % uri]
    except Exception, e:
        start_response("200 OK", [('Content-type','text/html')])
        error_template = exceptions.html_error_template(lookup)
        return [error_template.render(error=e)]
    
server = wsgiServer.WSGIServer (('localhost', 8000), {'/': serve})
print "Server listening on port 8000"
server.serve_forever()