Я новичок в Django, и я разрабатываю веб-сайт, который имеет некоторые функции, такие как Войти и Зарегистрироваться. Я уже попробовал функцию регистрации (registrarUsuario
) и думаю, что она работает правильно, но когда я пытаюсь войти в систему, используя созданную учетную запись, он перенаправляет меня на ту же страницу, и пользователь не входит в систему (я проверил это с помощью request.user.is_authenticated
). Я много исследовал и пока не нашел решения.
Примечание : логин, используемый для работы с предопределенными пользователями, которых я создал с помощью django (только имя пользователя и пароль) ... но я использую свою собственную модель СО User
Класс
Я опубликую регистрационный код пользователя на тот случай, если проблема возникнет.
МНЕНИЯ
def registroUsuarios(request): #REGISTER USER FUNCTION
form=RegistrarUsuario(request.POST)
if form.is_valid():
data=form.cleaned_data
regDB=User.objects.create_user(data.get("username"),data.get("password"))
usuario=Usuario(user=regDB,correo=data.get("correo"),nombreCompleto=data.get("nombreCompleto"),direccionUsuario=data.get("direccionUsuario"),perfil=data.get("perfil"))
regDB.save()
usuario.save()
usuarios=Usuario.objects.all()
form=RegistrarUsuario()
titulo="Mis Perris | Registro Usuarios"
return render(request,"registroUsuarios.html",{'titulo':titulo,'form':form,'usuarios':usuarios})
def ingresar(request): #LOG IN FUNCTION
titulo="Mis Perris | Login"
form=Login(request.POST or None)
if form.is_valid():
data=form.cleaned_data
user=authenticate(username=data.get("username"),password=data.get("password"))
if user is not None:
login(request,user)
return redirect('inicio')
return render(request,"login.html",{'form':form,'titulo':titulo})
МОДЕЛЬ
class Usuario(models.Model): #USER CLASS
user=models.OneToOneField(User,on_delete=models.CASCADE)
#username=models.CharField(primary_key=True, max_length=20)
#password=models.CharField(max_length=20)
correo=models.EmailField(max_length=30)
nombreCompleto=models.CharField(max_length=30)
direccionUsuario=models.CharField(max_length=30)
perfil=models.CharField(max_length=20,default="Guest")
ФОРМЫ
perfiles=(
('Administrador','Administrador'),
('Guest','Guest'),
('Usuario','Usuario'),
)
class RegistrarUsuario(forms.Form): #REGISTER USER
username=forms.CharField(widget=forms.TextInput(),label="Nombre de Usuario")
password=forms.CharField(widget=forms.PasswordInput(),label="Contraseña")
correo=forms.EmailField(widget=forms.EmailInput(),label="Correo")
nombreCompleto=forms.CharField(widget=forms.TextInput(),label="Nombre Completo")
direccionUsuario=forms.CharField(widget=forms.TextInput(),label="Dirección")
perfil=forms.ChoiceField(choices=perfiles)
class Login(forms.Form):
username=forms.CharField(widget=forms.TextInput(),label="Nombre de Usuario")
password=forms.CharField(widget=forms.PasswordInput(),label="Contraseña")
login.html
{% extends "master.html" %}
{% load static %}
{% block Login %}
<section class="login-block">
<div class="logincontainer">
<div class="row">
<div class="col-md-4 register-sec">
<h2 class="text-center">Iniciar Sesión</h2>
<form method="POST" class="login-form">
<div class="col-10">
{% csrf_token %}
{{form.as_p}}
</div>
<div class="form-check col-md-11">
<button type="submit" class="btn btn-login float-left">Iniciar Sesión</button>
<input class="btn btn-login float-right" type="button" value="Registrarse" onclick="location.href = '{% url 'registro' %}';"></button>
</div>
</form>
<div class="copy-text"><a href="#">¿Olvidaste tu Contraseña? Clic AQUÍ</a></div>
</div>
</div>
</div>
</section>
{% endblock %}
REGISTROUSUARIOS.HTML (Зарегистрировать пользователя)
{% extends "master.html" %}
{% load static %}
{% block RegistroUsuarios %}
<section class="register-block">
<div class="registercontainer">
<div class="row">
<div class="col-md-12 register-sec">
<h2 class="text-center">Registro Usuarios</h2>
<form method="POST" class="register-form">
<div class="col-6">
{% csrf_token %}
{{form.as_p}}
</div>
<div class="form-check col-md-6">
<button type="submit" class="btn btn-register float-right">Registrarse</button>
</div>
</form>
</section>
{% endblock %}
P.S: Извините, если код на испанском
РЕДАКТИРОВАТЬ: я уже пытался удалить файлы БД и миграций и делать makemigrations
и migrate
снова
РЕДАКТИРОВАТЬ 2: Я перечислил всех пользователей, которых я зарегистрировал, и они регистрируются правильно, поэтому кажется, что проблема в входе в систему. Я также создал superuser
, используя команды django, и это работает! Но я до сих пор не могу найти ошибку