Пользователь не аутентифицируется - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь создать простую страницу входа. Но пользователь всегда возвращается как none.

Вот мой логин. html

<form method = 'POST'>
        {% csrf_token %}
    <div class="body"></div>
        <div class="name">
            <div>Chili<span>Pili</span></div>
        </div>
        <br>
        <div class="login">
                <input type="text" placeholder="Username" name="username"><br>
                <input type="password" placeholder="Password" name="password"><br>
                <input type="submit" value="Login">
        </div>
    </form>

моя функция входа в view.py

def login(request):
    if request.method == "POST":
        username = request.POST['username']
        password = request.POST['password']

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

        if user is not None:
            login(user)
            print (user)
            messages.success(request, "You have successfully Logged In.")
            return redirect('index')
        else:
            messages.error(request, "You have entered invalid credentials. Please try again")
            return redirect('login')
    else:
        return render(request, 'main/login.html')
    

models.py:

class users(models.Model):
    _id = models.AutoField
    name = models.CharField(max_length = 100)
    username = models.CharField(max_length = 100)
    email = models.EmailField(max_length=254)
    hpassword = models.CharField(max_length = 255)
    category = models.CharField(max_length=50, default= "teacher")

    def __str__(self):
        return self.name 
        return self.username
        return self.email
        return self.category

    USERNAME_FIELD = 'username'
    REQUIRED_FIELDS = [username, hpassword]

Продолжает возвращаться как none, и выполняется только оператор else. Я не могу понять, что здесь не так

1 Ответ

0 голосов
/ 14 июля 2020

попробуйте

def loginview(request):
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(request, username=username, password=password)
    if user is not None:
        login(request, user)
        
        ...
    else:
       
        ...

причина, по которой вы получаете эту ошибку, заключается в том, что логин (запрос, пользователь) возвращается к методу просмотра входа, а не к использованию метода входа в систему .... изменить имя метода просмотра входа на "loginview", все будет хорошо.

...