Authenticate() не проверяет данные должным образом django

Когда я пытаюсь нажать на кнопку входа в систему, она всегда выдает ошибку неверных учетных данных, а не перенаправляет на индексную страницу. Я сделал следующее: в базе данных создал таблицу с именем signup и хочу проверить все данные из этой таблицы... Здесь функция signup_data работает хорошо, но в login_data не может аутентифицировать пользователя.

Models.py

from django.db import models

class signup(models.Model):
    username = models.CharField(max_length=10)
    first_name = models.CharField(max_length=20)
    last_name = models.CharField(max_length=20)
    email = models.EmailField()
    password = models.CharField(max_length=10)

Forms.py

from django.forms import ModelForm
from . models import signup
from django import forms

class signupform(ModelForm):
    username= forms.CharField(max_length=10,widget=forms.TextInput(attrs={'class':'form-control'}))
    first_name = forms.CharField(max_length=20, widget=forms.TextInput(attrs={'class': 'form-control'}))
    last_name = forms.CharField(max_length=20,widget=forms.TextInput(attrs={'class': 'form-control'}))
    email =  forms.EmailField(max_length=20,widget=forms.EmailInput(attrs={'class': 'form-control'}))
    password = forms.CharField(max_length=10,widget=forms.PasswordInput(attrs={'class':'form-control'}))

    class Meta:
        model = signup
        fields = '__all__'

Views.py

from django.shortcuts import render,redirect
from . forms import  signupform
from . models import signup
from django.contrib import messages
from django.contrib.auth  import login,authenticate

def index(response):
    return render(response,'login_module/index.html')

def signup_data(response):
    if response.method == 'POST':
        form = signupform(response.POST)
        
        if form.is_valid():
            username = form.cleaned_data['username']
            first_name = form.cleaned_data['first_name']
            last_name = form.cleaned_data['last_name']
            email = form.cleaned_data['email']
            password = form.cleaned_data['password']
            
            if signup.objects.filter(username=username).exists():
                # messages.add_message(response,messages.WARNING,'Username is already taken')
                messages.error(response,'Username is already taken')
                return redirect('signup')

            elif signup.objects.filter(email=email).exists():
                messages.error(response,'Email is already taken')
                # messages.add_message(response,messages.WARNING,'Email is already taken')
                return redirect('signup')
            
            else:
                register_instance = signup(username=username, first_name=first_name, last_name=last_name, email=email, password=password)
                register_instance.save()
                messages.success(response,'Registered Successfull')
                return redirect('signup')

    else:
        form = signupform()
        
    return render(response,'login_module/signup.html',{'form':form, 'message': messages})
    


def login_data(request):
    form = signupform(request.POST or None)
    if request.method == "POST":
        username = request.POST['username']
        password = request.POST['password']

        user = authenticate(username=username, password=password)

        if user is not None:
            login(request,user)
            return redirect('index')
        else:
            messages.error(request,'Invalid Credentials')   
            return redirect('login')
    else:
        return render(request,'login_module/login.html',{'form':form, 'message': messages})

Login.html

{% extends 'login_module/base.html' %}
{% block content %}
<div class="container">
    <div class="row">
        <div class="col-md-12 text-center mt-50">
            <h1>Login Page</h1>
        </div>
    </div>
    <div class="row">
        <div class="col-md-4 offset-md-4 ">
            <form method="post" action="{% url 'login' %}">
                {% csrf_token %}
                <div class="form-group rounded-top">
                    {{ form.username.label_tag }} {{ form.username }}
                </div>
                <div class="form-group rounded-top">
                    {{ form.password.label_tag }} {{ form.password }}
                </div>
                <div class="text-center">
                    <button type="submit" class="btn btn-primary">Login</button>
                </div>
            </form>
            
        </div>
    </div>



      <div class="text-center mt-50">
            {% if messages %}
                {% for message in messages %}
                <div class="alert alert-danger" role="alert">
                {{ message }}
                {% endfor %}
            {% endif %}      
      </div>  
</div>
{% endblock %}

Страница входа

Насколько я могу судить, вы создаете объект signup при регистрации, но при попытке войти в систему с помощью authenticate django ищет общую модель User. Вы должны создать пользователя в базе данных, а не объект signup, чтобы использовать authenticate.

Вернуться на верх