Home

WSGI Is Teh Awesome @ 2008-10-05 18:52:18
Filed under: Python  Tech 
Check out how easy it is to make a basic self contained framework that does object publishing based on class name ....

# Filename: server.py
import views


def dispatcher(environ, start_response):
    obj_name = environ['PATH_INFO'][1:].replace('/', '_')

    if obj_name == '' or obj_name == '_':
        obj_name = "root"
    elif obj_name[-1] == '_':
        obj_name = obj_name[:-1]
    try:
        obj = getattr(views, obj_name)
        return obj(environ, start_response)
    except AttributeError, ae:
        start_response('404 Not Found', [('Content-type', 'text/html')])
        return ['404']


if __name__ == '__main__':
    from wsgiref import simple_server

    httpd = simple_server.WSGIServer(('',8000),
                                     simple_server.WSGIRequestHandler)
    httpd.set_app(dispatcher)
    try:
        httpd.serve_forever()
    except KeyboardInterrupt:
        pass

And the views ...
# Filename: views.py

def root(environ, start_response):
    start_response('200 OK', [('Content-type', 'text/html')])
    return ['Welcome']


def show_environ(environ, start_response):
    start_response('200 OK', [('Content-type', 'text/html')])
    sorted_keys = environ.keys()
    sorted_keys.sort()
    return [str(environ)]


def some_longer_url(environ, start_response):
    start_response('200 OK', [('Content-type', 'text/html')])
    return ['hey hey']

 digg it   seed it   del.icio.us   ma.gnolia
Tags:    


 
Ohloh profile for ashcrow View Steve Milner's profile on LinkedIn A Django joint.
© 2007-2008 Steve 'Ashcrow' Milner | Studio7designs | Arbutus Photography