Почему authenticate не работает для объектов пользователя, несмотря на сохранение объектов в панели администратора в Django

вот мой код loginHtml

<form method="post" action="handleLogin_url" enctype="multipart/form-data">
{{ tryAgain }}
<br>
{% csrf_token %}
<label for="username">Enter Username</label><input id="username"  name="username" type="text">
<label for="password">Enter password</label><input id='password' name="password" type="password">
<input type="submit" value="Lets Go">

views.py

def handleLogin(HttpRequest):
if HttpRequest.method=='POST':
    enteredname = HttpRequest.POST['username']
    # user = User.objects.get(username=enteredname)
    enteredpassword = HttpRequest.POST['password']
    user = authenticate( HttpRequest, username=enteredname,password=enteredpassword)

    # return render(HttpRequest, 'seeData.html',
    #               {'User': user, 'enteredname': enteredname, 'enteredpassword': enteredpassword})

    if user is not None:
        return render(HttpRequest, 'seeData.html', {'Users':user, 'enteredname':enteredname, 'enteredpassword':enteredpassword})

    else :
        tryAgain = "Invalid username or password try again"
        return render(HttpRequest, 'LoginHtml.html', {'tryAgain':tryAgain})

else:
    return render(HttpRequest,'LoginHtml.html')

seeDataHtml код

{{ User.username }},{{ User.password }}||{ enteredname }} {{ введенный пароль }}

Когда я пытаюсь использовать учетные данные суперпользователя, возвращается объект суперпользователя, но когда я использую учетные данные пользователя, объект не возвращается, но когда я вхожу на сайт администратора, я могу видеть объекты пользователя

Вы делаете здесь много ошибок первым делом ваш HTML должен выглядеть так:

<div class="container py-5">
    <form method="POST" enctype="multipart/form-data">
        <div class="mb-3">
            {% csrf_token %}
            {{login_form}}
        </div>
        <input type="submit" name="Log in" class="btn btn-primary"></input>
    </form>
    {% for message in messages %}
    {% if message.tags %}
    <span class="{{ message.tags }}"> </span>

    {{ message }}
    {% endif %}
    {% endfor %}

    <br>
    <a href="/password_reset"> Forgot Password</a>
</div>

В views.py

from django.contrib.auth.forms import AuthenticationForm 
from django.contrib.auth import login as login_auth, authenticate
from django.contrib import messages
from django.shortcuts import redirect, render


def login(request):
    if request.user.is_authenticated: #to check if user is authenticated 
        return redirect('home')
    
    if request.method == "POST":
        form = AuthenticationForm(request, data=request.POST)
        if form.is_valid(): #If form is valid returns True
            username = form.cleaned_data.get('username')
            password = form.cleaned_data.get('password')
            user = authenticate(username=username, password=password)
            if user is not None:
                login_auth(request, user)
                return redirect('home')
            else:
                messages.error(request,"Invalid username or password.")
        else:
                messages.error(request,"Invalid username or password.")
    else:
        form = AuthenticationForm()
    return render(request, 'login.html', {'login_form': form})

Также я видел, что вы создаете новую страницу, чтобы показать сообщение об ошибке, вы можете сделать это с помощью сообщений Django from django.contrib import messages

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