importreimportcgiimportwebapp2# html boilerplate for the top of every pagepage_header="""
User-SignupSignup
"""# html boilerplate for the bottom of every pagepage_footer=""""""USER_RE=re.compile(r"^[a-zA-Z0-9_-]{3,20}$")defvalid_username(username):returnusernameandUSER_RE.match(username)PASS_RE=re.compile(r'^[\S]+@[\S]+\.[\S]+$')defvalid_password(password):returnpasswordandPASS_RE.match(password)EMAIL_RE=re.compile(r'^[\S]+@[\S]+\.[\S]+$')defvalid_email(email):returnnotemailorEMAIL_RE.match(email)classMainHandler(webapp2.RequestHandler):defget(self):add_username="""Username """add_password="""Password """validate_password="""Password """# error = self.request.get("error")# if error:# error_esc = cgi.escape(error, quote=True)# error_element = '' + error_esc + '
'# else:error_element=''password_error=''content=page_header+add_username+error_element+add_password+password_error+page_footerself.response.write(content)defpost(self):error_element=''have_error=Falseuser_name=self.request.get("user_name")password=self.request.get("password")params=dict("")ifnotvalid_username(user_name):error_element="thats not a valid username"have_error=Trueifnotvalid_password(password):password_error="thats not a valid password"have_error=Trueadd_username="""Username """.format(user_name)add_password="""Password """.format(password)validate_password="""Password """.format(password_error)content=page_header+add_username+error_element+add_password+password_error+page_footerself.response.write(content)