summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2006-11-30 02:50:05 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2006-11-30 02:50:05 +0000
commit2668baad173b6864e6fdb576ebf4fc0899481e86 (patch)
tree4081fb7ae3d64f2a7a47ab36558968f87eee6ffe /examples
parente98d3c5a5ce88bf5fc76a4b5fbb92e6a4f89bf90 (diff)
downloadmako-2668baad173b6864e6fdb576ebf4fc0899481e86.tar.gz
added wsgi example, working on lookup/exception reporting
Diffstat (limited to 'examples')
-rw-r--r--examples/wsgi/index.html3
-rw-r--r--examples/wsgi/root.html7
-rw-r--r--examples/wsgi/run_wsgi.py31
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()