Модель пользователя и аутентификация пользователей (Django и mysql)

Я новичок в разработке веб-приложений на py. Я использую django и mysql для своего веб-приложения. Мое приложение работает, но я не могу сохранить сессию входа. После каждого запроса на главной странице оно перенаправляет меня на страницу входа. Причина в том, что я не использую систему авторизации пользователей django, вместо этого я написал свой собственный код авторизации внутри

```view.py ``` 
def login(request):
    if request.method == "POST":
        form = Studentlogin(request.POST)
        if form.is_valid():
            email = form.cleaned_data.get('email')
            password = form.cleaned_data.get('password')
            try:
                currstudent = students.objects.get(email=email, password=password)
                expense = sublist.objects.all()
                return render (request, 'subscrap/main.html', {'student': currstudent, 'sublist': expense })
    

            except:
                messages.success(request, 'Error, either Email or Password is not correct')
                pass
    else:
        form = Studentlogin()
    return render(request, 'subscrap/login.html', {'form': form}) 

данные для входа доступны только внутри функции login, и мне приходится вызывать ее каждый раз, чтобы отобразить и увидеть обновленный main.html. Я искал в интернете и получил подсказку, что это может быть из-за того, что моя модель пользователя aka (class students) на самом деле не построена как модель пользователя. Я новичок в синтаксисе py и веб-разработке на нем и запутался в том, как реализовать Django user auth и сохранить мою информацию в базе данных Mysql, поскольку большинство учебников в сети используют SQLite. Любая помощь или подсказка поможет мне очень сильно. Спасибо

class students(models.Model):
    fname = models.CharField(max_length=50)
    lname = models.CharField(max_length=50)
    password = models.CharField(max_length = 50 , null = True)
    passwordrepeat = models.CharField(max_length = 50, null = True)
    email = models.EmailField(max_length=150)
    class Meta:
        db_table = "students"

Вы не должны хранить свои пароли в открытом виде, просто используйте встроенную в Django аутентификацию. ORM Django управляет различными базами данных, так что вам не придется этого делать. По большей части, переход с SQLite на MySQL не окажет никакого влияния на приложение благодаря ORM. Документация по MySQL находится здесь.

Если вашей целью является регистрация пользователя/студента, то просто расширьте модель пользователя, как описано здесь. Тогда ваша модель студента будет иметь все необходимые вам атрибуты и даже больше, как is_staff, is_superuser или last_login.

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