Python注册帐户模型

时间:2017-08-19 22:36:04

标签: javascript python hash passwords

我确信之前已经问过这个问题,但是我一直在寻找几个小时,而且找不到任何可以事先道歉的事情。我正处于学习使用Python进行在线课程编码的早期阶段,而且我正在偏离它,以使其成为我自己的。

当用户注册帐户时,如果已经使用了用户名,我想返回错误。否则创建帐户并重定向到登录页面。但是我不确定如何定义if语句以返回正确的控制台响应,因为它当前只返回用户。我希望这会返回成功/错误并使用ajax来捕获此响应。

我到目前为止的注册模型是:

class RegisterModel:

    def __init__(self):
        self.client = MongoClient()
        self.db = self.client.codewizard
        self.Users = self.db.users

    def insert_user(self, data):
        existing_user = self.Users.find_one({"username": data.username})
        if existing_user:
            pymsgbox.native.alert('Username already taken!', 'Title')
        else:
            hashed = bcrypt.hashpw(data.password.encode(), bcrypt.gensalt())

            id = self.Users.insert({"username": data.username, "name": data.name, "password": hashed, "email": data.email})
            print("uid is", id)

            pymsgbox.native.alert('Account created, please login!', 'Title')

控制器:

class PostRegistration:
    def POST(self):
        data = web.input()

        reg_model = RegisterModel.RegisterModel()
        reg_model.insert_user(data)

        return data.username

最后是javascript(没有用if语句完成)

 $(document).on("submit", "#register-form", function(e){
    e.preventDefault();
    var form = $('#register-form').serialize();
    $.ajax({
        url: '/postregistration',
        type: 'POST',
        data: form,
        success: function(response){
            console.log(response);
        }
    });
});

pymsgbox将被Javascript取代,当我可以让它工作时!

1 个答案:

答案 0 :(得分:0)

想出来:

控制器:

class PostRegistration:
def POST(self):
    data = web.input()

    reg_model = RegisterModel.RegisterModel()
    register = reg_model.insert_user(data)
    if register:
        return register

然后在寄存器模型if语句中返回“error”。

相关问题