我确信之前已经问过这个问题,但是我一直在寻找几个小时,而且找不到任何可以事先道歉的事情。我正处于学习使用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取代,当我可以让它工作时!
答案 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”。