1
resposta

Não funcionou o login

@main_bp.route('/login', methods=['POST'])
def login():
try:
raw_data = request.get_json()
user_data = LoginPayload(**raw_data)
except ValidationError as e:
return jsonify({'error': e.errors()}), 400
except Exception as e:
return jsonify({'error': 'Erro durante a requisição do dado'}), 500

if user_data.username == 'admin' and user_data.password == '123':
    return jsonify({"message": "Login bem-sucedido!"})
else:
    return jsonify({"message": "Credenciais invalidas!"})

from pydantic import BaseModel

class LoginPayload(BaseModel):
username: str
password: str

Fiz da mesma forma que o professor, mas o código da erro ao ir na rota de login, conseguem verificar qual seria o erro?

1 resposta

Olá Rafael! Como vai?

Você está no caminho certo, mas pode haver alguns detalhes que estão faltando ou que podem ser ajustados. Vou sugerir algumas verificações e ajustes que podem ajudar a resolver o problema:

  1. Importações: Certifique-se de que todas as importações necessárias estão corretas. Parece que você está importando LoginPayload diretamente no seu código, mas no contexto da aula, ele deveria ser importado de app.models.user. Verifique se a importação está correta e se o arquivo user.py está no caminho correto.

  2. Estrutura do JSON: Ao fazer a requisição para a rota de login, certifique-se de que o JSON enviado está no formato correto, com as chaves username e password. Por exemplo:

    {
        "username": "admin",
        "password": "123"
    }
    
  3. Execução do Servidor: Certifique-se de que o servidor Flask está rodando corretamente. Você pode iniciar o servidor com o comando python run.py, conforme mencionado no contexto da aula.

  4. Erro de Validação: Se estiver recebendo um ValidationError, pode ser que o JSON não esteja sendo enviado corretamente ou que as chaves estejam erradas. Verifique o formato do JSON na requisição.

Espero que essas dicas ajudem você a resolver o problema com o login.

Bons estudos e espero ter ajudado!

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