import cgi class BaseWSGI: def __init__(self, environ, start_response): self.environ = environ self.start = start_response def __iter__(self): method = 'do_%s' % self.environ['REQUEST_METHOD'] if not hasattr(self, method): status = '405 Method Not Allowed' response_headers = [('Content-type','text/plain')] self.start(status, response_headers) yield 'Method Not Allowed' else: m = getattr(self, method) yield m() def parse_fields(self): ''' parse url-form-encoded fields ''' s = self.environ['wsgi.input'].read(int(self.environ['CONTENT_LENGTH'])) return cgi.parse_qs(s) import random number = random.randint(1,100) class Test(BaseWSGI): def __init__(self, environ, start_response): BaseWSGI.__init__(self, environ, start_response) self.message = '' def do_GET(self): status = '200 OK' response_headers = [('Content-type','text/html')] self.start(status, response_headers) return '''

%s

''' % self.message def do_POST(self): global number fields = self.parse_fields() if not fields.has_key('myparam'): self.message = 'You didn\'t guess' return self.do_GET() guess = int(fields['myparam'][0]) if guess == number: self.message = 'You guessed correctly' number = random.randint(1,100) elif guess < number: self.message = 'Try again, the number is higher than your guess' else: self.message = 'Try again, the number is lower than your guess' return self.do_GET() if __name__ == '__main__': from wsgiref import simple_server httpd = simple_server.make_server('', 8080, Test) try: httpd.serve_forever() except KeyboardInterrupt: pass