2017-08-19 1 views
0

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!

Répondre

0

figured it out:

Controller:

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

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

puis retour "erreur" dans la déclaration de modèle de registre if.