From 2668baad173b6864e6fdb576ebf4fc0899481e86 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Thu, 30 Nov 2006 02:50:05 +0000 Subject: added wsgi example, working on lookup/exception reporting --- examples/wsgi/index.html | 3 +++ examples/wsgi/root.html | 7 +++++++ examples/wsgi/run_wsgi.py | 31 +++++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 examples/wsgi/index.html create mode 100644 examples/wsgi/root.html create mode 100644 examples/wsgi/run_wsgi.py (limited to 'examples/wsgi') diff --git a/examples/wsgi/index.html b/examples/wsgi/index.html new file mode 100644 index 0000000..e38dde4 --- /dev/null +++ b/examples/wsgi/index.html @@ -0,0 +1,3 @@ +<%inherit file="root.html"/> + +This is index.html \ No newline at end of file diff --git a/examples/wsgi/root.html b/examples/wsgi/root.html new file mode 100644 index 0000000..6b57fc3 --- /dev/null +++ b/examples/wsgi/root.html @@ -0,0 +1,7 @@ + + +hi + + ${next.body()} + + \ No newline at end of file diff --git a/examples/wsgi/run_wsgi.py b/examples/wsgi/run_wsgi.py new file mode 100644 index 0000000..029e240 --- /dev/null +++ b/examples/wsgi/run_wsgi.py @@ -0,0 +1,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() -- cgit v1.2.3