Вход в Django с использованием класса пользователя, перенаправляющего на ту же страницу - PullRequest
0 голосов
/ 06 ноября 2018

Я новичок в 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, и это работает! Но я до сих пор не могу найти ошибку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...