Je suis sûr que cela a déjà été demandé, mais j'ai cherché pendant des heures et ne trouve rien qui fonctionne donc des excuses à l'avance. Je suis au début de l'apprentissage du code avec Python sur un cours en ligne et je m'en écarte un peu pour le faire mien.Python Enregistrer le modèle de compte
Lorsqu'un utilisateur enregistre un compte, je souhaite renvoyer une erreur si le nom d'utilisateur est déjà pris. Sinon, pour créer le compte et rediriger vers la page de connexion. Cependant, je ne suis pas sûr de savoir comment définir l'instruction if pour renvoyer la bonne réponse de la console car elle ne renvoie que l'utilisateur. Je veux que ceci renvoie le succès/l'erreur et utilise ajax pour attraper cette réponse.
Le modèle de registre, j'ai à ce jour est:
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')
Et le contrôleur:
class PostRegistration:
def POST(self):
data = web.input()
reg_model = RegisterModel.RegisterModel()
reg_model.insert_user(data)
return data.username
et enfin le javascript (pas terminé avec instruction 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
sera remplacé par le Javascript quand je peux le faire fonctionner!