Модель пользователя и аутентификация пользователей (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
.