我是Django的新手,我正在开发一个具有登录和注册等功能的网站。我已经尝试过注册功能(registrarUsuario
),并且我认为它可以正常工作,但是当我尝试使用创建的帐户登录时,它会将我重定向到同一页面,并且用户未登录(我检查了此request.user.is_authenticated
)。我做了很多研究,但还没有找到解决方案。
注意:该登录名曾经与我使用django创建的预定义用户(仅用户名和密码)一起使用...,但我将自己的模型与User
类一起使用< / p>
我将发布注册用户代码,以防出现问题。
观看次数
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:我列出了我已经注册的所有用户,并且他们已经正确注册,因此看来问题出在登录中。我还使用django命令创建了superuser
,它可以正常工作!但是我仍然找不到错误