2017-06-11 4 views
0

J'utilise un framework pyramid avec BD postgres, je fais un login, mais j'ai l'erreur suivante" Erreur d'attribut: Type objet "Client" n'a pas d'attribut " obtenir "". "Erreur d'attribut: Type objet "Client" n'a pas d'attribut "get

@view_config (ROUTE_NAME = 'login', 'templates/login.pt' = renderer)

def login(request): 
    a = request.params.get('login1') 
    contrasenia = request.params.get('password1') 
    if request.method == 'POST': 
     if a and Client.get(a) == contrasenia: 
      headers = remember(request, a) 
      return HTTPFound('/', headers=headers) 
    return {} 

Répondre

1

L'erreur décrit le problème. Cette ligne est le problème:

if a and Client.get(a) == contrasenia: 

L'objet Client n'a pas un attribut de get. Désolé, je n'ai aucune idée de ce que cet objet pourrait être basé sur les informations fournies. Je suggère de travailler à travers la pyramide officielle SQLAlchemy + URL dispatch wiki tutorial. Bien qu'il utilise SQLite pour une base de données, les concepts s'appliquent également à Postgres. L'étape sur l'authentification a également des détails pertinents pour votre problème spécifique.

0

Si je devine correctement, vous essayez probablement d'authentifier l'utilisateur.

Prénom vos variables de façon appropriée:

email = request.params.get('email') 
password = request.params.get('password') 

requête Ensuite, le client par e-mail (im devine que vous utilisez SQLAlchemy):

client = Session.query(Client).filter(Client.email == email).first() 

Si le client existe pour le courrier électronique donné puis vérifier hashs (rechercher sur le Web à propos de la sécurité par mot de passe, exemples de solutions: Salt and hash a password in python)

if client.password_hash == hashing_func(password): 
    return HTTPFound('/', headers=remeber(request, client.id))