I am trying to create a simple login page. But user is always returned as none.
Here's my login.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>
my login function in 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]
The keeps returning as none and only else statement gets executed. I am not able to understand what is going wrong here
 
    