User signup (HTML and Python),signuppython,[Python]代码#!


[Python]代码

#!/usr/bin/env python## Copyright 2007 Google Inc.## Licensed under the Apache License, Version 2.0 (the "License");# you may not use this file except in compliance with the License.# You may obtain a copy of the License at##     http://www.apache.org/licenses/LICENSE-2.0## Unless required by applicable law or agreed to in writing, software# distributed under the License is distributed on an "AS IS" BASIS,# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.# See the License for the specific language governing permissions and# limitations under the License.#import webapp2import stringimport reUSER_RE = re.compile(r"^[a-zA-Z0-9_-]{3,20}$")PASSWORD_RE = re.compile(r"^.{3,20}$")EMAIL_RE = re.compile(r"^[\S]+@[\S]+\.[\S]+$")form_signup="""<form method="post">    <div><b>Signup</b></div>    <br>    <label>        Username        <input type="text" name="username" value="%(username)s">        <div style="color: red">%(error_username)s</div>    </label>    <br>    <label>        Password        <input type="password" name="password" value="%(password)s">        <div style="color: red">%(error_password)s</div>    </label>    <br>    <label>        Verify Password        <input type="password" name="verify" value="%(verify)s">        <div style="color: red">%(error_verify)s</div>    </label>    <br>    <label>        Email (optional)        <input type="text" name="email" value="%(email)s">        <div style="color: red">%(error_email)s</div>    </label>    <br>    <input type="submit"></form>"""class MainHandler(webapp2.RequestHandler):    def get(self):        self.response.out.write('Hello, Udacity!')class SignupHandler(webapp2.RequestHandler):    def valid_username(self, username):        if USER_RE.match(username):            return ""        else:            return "That's not a valid username."    def valid_password(self, password, verify):        if PASSWORD_RE.match(password):            error_password = ""        else:            error_password = "That wasn't a valid password."        if cmp(password, verify) == 0:             error_verify = ""        else:            error_verify = "Your password didn't match."        return (error_password, error_verify)    def valid_email(self, email):        if EMAIL_RE.match(email) or len(email) == 0:            return ""        else:            return "That's not a valid email."    def write_form(self, username="", password="", verify="", email="",                error_username="", error_password="", error_verify="", error_email=""):        self.response.out.write(form_signup %{"username": username, "password": password, "verify": verify,                                            "email": email, "error_username": error_username, "error_password": error_password,                                             "error_verify": error_verify, "error_email": error_email})    def get(self):        self.write_form()    def post(self):        user_name = self.request.get('username')        user_password = self.request.get('password')        user_verify = self.request.get('verify')        user_email = self.request.get('email')        error_username = self.valid_username(user_name)        error_password, error_verify = self.valid_password(user_password, user_verify)        error_email = self.valid_email(user_email)        if (error_username or error_password or error_verify or error_email):            self.write_form(user_name, user_password, user_verify, user_email,                         error_username, error_password, error_verify, error_email)        else:            self.redirect("/unit2/welcome?username=" + user_name)class WelcomeHandler(webapp2.RequestHandler):    def get(self):        username = self.request.get('username')        self.response.out.write("Welcome, %s!" %username)app = webapp2.WSGIApplication([('/', MainHandler),                                 ('/unit2/signup', SignupHandler),                                ('/unit2/welcome', WelcomeHandler)],                              debug=True)

评论关闭