diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-11-30 02:50:05 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-11-30 02:50:05 +0000 |
commit | 2668baad173b6864e6fdb576ebf4fc0899481e86 (patch) | |
tree | 4081fb7ae3d64f2a7a47ab36558968f87eee6ffe /examples | |
parent | e98d3c5a5ce88bf5fc76a4b5fbb92e6a4f89bf90 (diff) | |
download | mako-2668baad173b6864e6fdb576ebf4fc0899481e86.tar.gz |
added wsgi example, working on lookup/exception reporting
Diffstat (limited to 'examples')
-rw-r--r-- | examples/wsgi/index.html | 3 | ||||
-rw-r--r-- | examples/wsgi/root.html | 7 | ||||
-rw-r--r-- | examples/wsgi/run_wsgi.py | 31 |
3 files changed, 41 insertions, 0 deletions
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 @@ +<html> + +<head><title>hi</title></head> +<body> + ${next.body()} +</body> +</html>
\ 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() |