1
resposta

Problema na parte da autenticação, aula 9

Eu copiei igual no video da aula 9, mesmo assim deu problema

quando ele faz a consulta:

usuario = Usuarios.query.filter_by(nickname=request.form['usuario'])

quando vai fazer a verificacao

if request.form['senha'] == usuario.senha:

dá o seguinte erro:

AttributeError: 'Query' object has no attribute 'senha'

Ja tentei de tudo pra tentar contornar o erro, até criar uma variavel e por o request.form['usuario'] no conteudo dela, mas nao adiantou, por algum motivo quando usa o filter_by ele nao ta criando direito a tabela na variavel usuario

1 resposta

Olá Alison, tudo bem com você?

Peço desculpas pela demora em lhe responder.

Realizando teste e simulações com o código enviado, é apresentado o, AttributeError: 'Query' object has no attribute 'senha'. O erro está sendo levantado devido não ter sido feita a declaração do método first(), no momento em que é criada a query para coletar o nome do usuário no banco de dados.

Sem declararmos o método first() o valor atribuído à variável usuario será uma solicitação (query) e não o seu resultado. Como queremos o resultado da query, devemos informar que queremos o primeiro resultado do filtro filter_by(), usando assim o método first().

Para que o código funcione corretamente, adicione o método first() a declaração da variável usuario presente na função autenticar do arquivo views.py. Deverá ficar da seguinte forma a declaração.

usuario = Usuarios.query.filter_by(nickname=request.form['usuario']).first()

Realizando a adição do método first() será salvo na variável usuario o primeiro resultado da solicitação, removendo assim o erro.

Após realizar a mudança, salve o arquivo views.py, inicie o servidor e realize um novo login.

Fico à disposição em caso de dúvidas.

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!