import webapp2 mainForm=""" <form method='post' action='#'> <label>What world do you come from? <br> <input name='world' value='%(world)s' placeholder='Minecraft World'> </label> <label>What's your name? <input name='name' value='%(name)s'> </label> <label>How old are you? <input name='age' value='%(age)s'> </label> <br> <br> <br> <div style='color:red'>%(error)s</div> <input type='submit'> </form> """ class MainPage(webapp2.RequestHandler): def get(self): #self.response.headers['Content-Type'] = 'text/plain' #self.response.write('Hello, World!') #self.response.write(form) self.write_form() # writes the form with an optional error message # can also take in form inputs from previous submission to populate the # value attributes so as to preserve user input on error def write_form(self, error='', world='', name='', age=''): import cgi self.response.write(mainForm % {'error': cgi.escape(error), 'world': cgi.escape(world), 'name': cgi.escape(name), 'age': cgi.escape(age), }) def post(self): w = self.request.get('world').split(' ')[0] n = self.request.get('name') a = self.request.get('age') # validate form err=None worlds=('Minecraft', 'Hello Kitty', 'Disney', 'Fantasy') if w not in worlds: err="Sorry %(n)s I've never heard of your %(w)s world!" %{'n':n, 'w':w} strw=', '.join(w+' world' for w in worlds) err+="\nI've only heard of " + strw elif not a.isdigit(): err="Sorry %s, '%s' doesn't seem like a valid age to me" %(n, a) elif int(a)>18: err="Sorry %s, I'm afraid you're too old to enjoy this site..." %n elif int(a)<=6: err="Sorry %s, this site is not for kindergarteners" %n if err: self.write_form(err,w,n,a) else: # redirect to success page from urllib import urlencode self.redirect('/hello?'+urlencode({'world':w, 'name':n, 'age':a})) # success page; prints a customized greeting class GreetHandler(webapp2.RequestHandler): def get(self): #self.response.write(self.request) greeting=""" <h1>Oh hai dear %s from %s World!</h1> """ n = self.request.get('name') w = self.request.get('world') self.response.write(greeting %(n, w)) app = webapp2.WSGIApplication([ ('/', MainPage), ('/hello', GreetHandler), ], debug=True)