2015-11-19 1 views
2

J'ai une fonction simple pour enregistrer un utilisateur. Il confirme d'abord si les détails de l'utilisateur sont corrects;Python: Impossible d'appeler la méthode du module importé

import user  


@app.route("/login/", methods=['POST', 'GET']) 
def login(): 
    if request.method == 'GET': 
     return render_template('login.html') 
    else: 
     _email = request.form['email'] 
     _password = request.form['password'] 
     if user.loginValidate(_email, _password) == True: 
      session['username'] = user.getUserName(_email) 
      session['loggedin'] = True 
      return redirect(url_for('home')) 
     else: 
      flash('Email or password incorrect!') 
      return render_template('login.html') 

Maintenant, pour une raison quelconque quand j'essaie d'appeler loginValidate je reçois une erreur qui 'function' object has no attribute loginValidate.

Le module a loginValidate qui renvoie soit True ou False, donc je ne vois pas quel est le problème.

loginValidate (dans le module user):

def loginValidate(this_email, this_password): 
    db = sqlite3.connect('data') 
    cursor = db.cursor() 
    cursor.execute("SELECT password FROM users WHERE email = ?", (this_email,)) 
    row = cursor.fetchone() 
    hash = row[0] 
    db.close() 
    return hash == bcrypt.hashpw(this_password, hash) 

Toute aide est appréciée!

+0

Avez-vous défini une classe dans user.py? – shahvishal

+0

Je ne sais pas, la chose étrange c'est que ça marchait il y a seulement 10 minutes (donc je sais que ça marche), donc j'ai dû accidentellement changer quelque chose de petit qui a affecté ça –

Répondre

1

Essayez:

from user import loginValidate 

Et:

if loginValidate(_email, _password) == True: 
+0

Ah désolé si ce n'était pas clair , 'loginValidate' est une fonction écrite dans un autre module appelé user.py qui est importé au début du module ci-dessus. –

+0

@JackMoulson puis-je voir votre contenu 'user.py'? –

+0

voici l'user.py: https://gist.github.com/Jacobite747/5110055ab7f92415ce25 –

0

Bien que je ne peux pas exactement le point où cela vient, l'erreur elle-même semble un indice assez clair. Python pense que "user" est une fonction, pas un module. Peut-être y a-t-il une fonction "utilisateur" définie ailleurs, et python l'importe en réalité