Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro no login name 'usuario' is not defined

Alguém pode me ajudar? Não consigo visualizar o erro, já verifiquei o código várias vezes e está de acordo com o código do professor.

Executo o preenchimento dos campos do formulário (nome e senha), e quando clico para submeter ele redireciona para a página de erro.


NameError at /login

name 'usuario' is not defined

Request Method: 	POST
Request URL: 	http://127.0.0.1:8000/login
Django Version: 	4.2.1
Exception Type: 	NameError
Exception Value: 	

name 'usuario' is not defined

Exception Location: 	C:\Users\Aluno\Documents\alura-space\usuarios\views.py, line 26, in login
Raised during: 	usuarios.views.login
Python Executable: 	C:\Users\Aluno\Documents\alura-space\venv\Scripts\python.exe
Python Version: 	3.10.7
Python Path: 	

['C:\\Users\\Aluno\\Documents\\alura-space',
 'C:\\Users\\Aluno\\AppData\\Local\\Programs\\Python\\Python310\\python310.zip',
 'C:\\Users\\Aluno\\AppData\\Local\\Programs\\Python\\Python310\\DLLs',
 'C:\\Users\\Aluno\\AppData\\Local\\Programs\\Python\\Python310\\lib',
 'C:\\Users\\Aluno\\AppData\\Local\\Programs\\Python\\Python310',
 'C:\\Users\\Aluno\\Documents\\alura-space\\venv',
 'C:\\Users\\Aluno\\Documents\\alura-space\\venv\\lib\\site-packages']

Server time: 	Thu, 10 Aug 2023 19:19:11 -0300

O meu código *views.py *está escrito dessa forma:

from django.shortcuts import render, redirect

from usuarios.forms import LoginForms, CadastroForms

from django.contrib.auth.models import User

from django.contrib import auth

def login(request):
    form = LoginForms()
    
    if request.method == 'POST':
        form = LoginForms(request.POST)
        
        if form.is_valid():
            nome = form['nome_login'].value()
            senha = form['senha'].value()
        
        user = auth.authenticate(
            request,
            username = nome,
            password = senha
        )
        if user is not None:
            auth.login(request, usuario)
            return redirect('index')
        else:
            return redirect('login')
            
            
    return render(request, 'usuarios/login.html', {"form": form})

def cadastro(request):
    form = CadastroForms()
    
    if request.method == 'POST':
        form = CadastroForms(request.POST)
        
        if form.is_valid():
            if form["senha_1"].value() != form["senha_2"].value():
                return redirect('cadastro')
            
            nome = form["nome_cadastro"].value()
            email = form["email"].value()
            senha = form["senha_1"].value()
            
            if User.objects.filter(username=nome).exists():
                return redirect('cadastro')
            
            usuario = User.objects.create_user(
                username = nome,
                email = email, 
                password = senha
                
            )
            usuario.save()
            return redirect('login')
    
    return render(request, 'usuarios/cadastro.html', {"form": form})

Gratidão para quem tirar um tempinho para me ajudar!

2 respostas
solução!

Oii, Fernanda, tudo certinho?

O erro indica que a variável usuario não está definida, na linha 26 do seu arquivo views.py. Essa linha é a auth.login(request, usuario). O segundo parâmetro de chamada da função de autenticação é a variável de usuário, que foi criada como user, no seu código, logo acima dessa função.

Para seu programa funcionar, é só alterar usuario para user.

Às vezes, dá uma confusãozinha misturar inglês e português, né? hehe

Espero que dê certo! Abração.

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

Brilhante Larissa! Obrigada pela ajuda!

Aqui deu certo, era isso mesmo Rsrsrs... :)

Abraço!