NameError. Function definition not getting read in Python 2.7 -
i trying run basic app on google app engine using python. code asks user inputs , validates them. can't seem next code run:
import webapp2 import re import cgi def escape_html(s): homecoming cgi.escape(s, quote = true) user_re = re.compile(r"^[a-za-z0-9_-]{3,20}$") def valid_username(username): homecoming user_re.match(username) email_re = re.compile(r'^[\s]+@[\s]+\.[\s]+$') def valid_email(email): homecoming email_re.match(email) pass_re = re.compile(r"^.{3,20}$") def valid_pass(password): homecoming pass_re.match(password) form = """ #form html form asks username, pass , email. <form method="post"> <br> <label> username </label> <input type="text" name="username" value= %(username)s> <div style="color: red">%(error1)s</div><br> <label> password </label> <input type="password" name="password"> <div style="color: red">%(error3)s</div><br> <label> verify password </label> <input type="password" name="verify"> <div style="color: red">%(error4)s</div> <div style="color: red">%(error5)s</div><br> <label> email </label> <input type="text" name="email" value= %(email)s> <div style="color: red"> %(error2)s </div><br> <input type="submit" name="submit form"> </form> """ class mainpage(webapp2.requesthandler): def write_form(self,error1="",error2="",error3="",error4="" , error5="", username="",email="" ): self.response.out.write(form %{"error1":error1, "error2":error2,"error3":error3,"error4":error4, "error5":error5,"username":escape_html(username),"email":escape_html(email)}) def get(self): self.write_form() def post(self): usr_username = self.request.get("username") usr_email = self.request.get("email") usr_password = self.request.get("password") usr_verify = self.request.get("verify") error1="";error2="";error3="";error4="";error5=""; username = vaild_username(usr_username); email = vaild_email(usr_email); password = vaild_pass(usr_password); verify = vaild_pass(usr_verify); if not (sername): error1 = "that not valid username" if not (email): error2 = "that not valid email" if not (password): error3 = "that not valid password" if not (verify): error4 = "that not valid verify password" if (password != verify): error5 = "passwords not matching!" self.write_form(error1, error2, error3, error4, error5, usr_username, usr_email) if (username , password , email , verify , password==verify): self.redirect("/thanks" ) class thankshandler(webapp2.requesthandler): def get(self): username = self.request.get("username") self.response.out.write("welcome" + username) app = webapp2.wsgiapplication([('/', mainpage), ('/thanks', thankshandler)], debug=true) i getting nameerror global name 'valid_username' not defined (line 62). unusual because function definitions @ top of file. think python not reading 3 validation functions @ top reason. have checked misspellings , indentation errors.
you didn't check misspellings enough: code says:
username = vaild_username(usr_username); "vaild" else "valid" :-)
and: don't need semicolon @ end of line.
python python-2.7
No comments:
Post a Comment