fork download
  1. import webapp2
  2. import re
  3.  
  4. USER_RE = re.compile(r"^[a-zA-Z0-9_-]{3,20}$")
  5. pass_re = re.compile(r"^.{3,20}$")
  6. email_re = re.compile(r"^[\S]+@[\S]+\.[\S]+$")
  7.  
  8. form="""
  9. <form method="post">
  10. <table>
  11. <label>
  12. Username :
  13. <input type="text" name="username" value="%(username)s">
  14. <font color="red">%(error_username)s</font>
  15. </label>
  16. <br>
  17. <label>
  18. Password :
  19. <input type="password" name="password">
  20. <font color="red">%(error_password)s</font>
  21. </label>
  22. <br>
  23. <label>
  24. Verify Password :
  25. <input type="password" name="verify">
  26. <font color="red">%(match_error)s</font>
  27. </label>
  28. <br>
  29. <label>
  30. Email(optional) :
  31. <input type="text" name="email" value="%(email)s">
  32. <font color="red">%(email_error)s</font>
  33. <label>
  34. <br>
  35. </table>
  36. <input type="submit">
  37. </form>
  38. """
  39.  
  40. class MainHandler(webapp2.RequestHandler):
  41. def get(self):
  42. self.write_form()
  43.  
  44. def write_form(self,user="",error_user="",error_pass="",error_verify="",mail="",error_mail=""):
  45. self.response.out.write(form%{"username":user,
  46. "error_username":error_user,
  47. "error_password":error_pass,
  48. "match_error":error_verify,
  49. "email":mail,
  50. "email_error":error_mail})
  51.  
  52.  
  53. def valid_username(self,user):
  54. return USER_RE.match(user)
  55.  
  56. def valid_password(self,password):
  57. return pass_re.match(password)
  58.  
  59. def valid_email(self,mail):
  60. if not mail:
  61. return True
  62. else:
  63. return email_re.match(mail)
  64.  
  65. def match(self,p,v):
  66. if p==v :
  67. return True
  68. return False
  69.  
  70. def post(self):
  71. user=self.request.get('username')
  72. pas=self.request.get('password')
  73. veri=self.request.get('verify')
  74. mail=self.request.get('email')
  75. username=self.valid_username(user)
  76. password=self.valid_password(pas)
  77. verify=self.match(veri,pas)
  78. email=self.valid_email(mail)
  79. if not username :
  80. error_user="That's not a valid username."
  81. else:
  82. error_user=""
  83. if not password :
  84. error_pass="That wasn't a valid password."
  85. else:
  86. error_pass=""
  87. if password and not verify:
  88. error_verify="Your passwords didn't match."
  89. else:
  90. error_verify=""
  91. if not email:
  92. error_mail="That's not a valid email."
  93. else:
  94. error_mail=""
  95.  
  96. if not(username) or not(email) or not(password) or not(verify):
  97. self.write_form(user,error_user,error_pass,error_verify,mail,error_mail)
  98. else:
  99. self.redirect('/welcome')
  100.  
  101. class welcomeHandler(webapp2.RequestHandler):
  102. def get(self):
  103. username=self.request.get('username')
  104. self.response.out.write("Welcome "+username)
  105.  
  106. app = webapp2.WSGIApplication([
  107. ('/', MainHandler),('/welcome',welcomeHandler)], debug=True)
  108.  
Runtime error #stdin #stdout #stderr 0.01s 9008KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Traceback (most recent call last):
  File "prog.py", line 1, in <module>
ImportError: No module named webapp2