Я пытаюсь создать систему аутентификации в Django. Мой код не может аутентифицировать пользователя.

        <form method="post" action="/" class="mb-2">
            {% csrf_token %}
            <div class="form-group">
                <label for="username">Username</label>
                <input type="text" class="form-control" id="username" name="username" placeholder="Enter Your Username" Required>
            </div>
            <div class="form-group">
                <label for="pass1">Password</label>
                <input type="password" class="form-control" id="pass1" name="pass1" placeholder="Enter Your Password" Required>
            </div>
    
            <button type="submit" class="btn btn-primary">Log In</button>
        </form>

Это форма из файла home.html

def home(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        pass1 = request.POST.get('pass1')
        user = authenticate(username=username, pass1=pass1)
        if user is not None:
             login(request, user)
             return render(request,"main_tem/room.html")
        else:
             return redirect('signup')
    return render(request,"main_tem/home.html") 

это домашний вид из views.py в 'main' app.

Как видно из вида home, если пользователь присутствует или зарегистрировался, он должен перенаправить пользователя на страницу room.html, но когда я пытаюсь это сделать, он перенаправляется на страницу регистрации, чего не должно происходить, если пользователь уже присутствует в базе данных. Я немного потерялся, так как не знаю, какое решение мне искать. Из того, что я заметил, я думаю, что вид home не может получить данные из формы в файле home.html

from django.contrib import admin
from django.urls import path
from . import views

urlpatterns=[
             path("",views.home,name="home"),
             path("signup",views.signup,name="signup"),
             path("rooms",views.rooms,name="rooms"),

            ]

для справки вот urls.py из 'main' приложения

Измените эту строку,

user = authenticate(username=username, pass1=pass1)

на это:

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

Вы должны идти к цели.

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