Простой вход/выход по паролю с использованием django и хранения сессий. Не работает вход в систему
Я пытаюсь сделать защищенную паролем страницу на сайте, используя django. Не нужно никакого имени пользователя, просто пользователь должен ввести пароль, чтобы получить доступ. Это хорошо, но у меня есть флажок, чтобы пользователь мог выбрать, оставаться ли ему под паролем в течение сессии, но затем на самой защищенной странице есть кнопка выхода, если он захочет. Моя идея состоит в том, чтобы установить переменную сессии при отправке формы входа, если флажок установлен, проверить наличие этой переменной в начале функции, чтобы перейти прямо на страницу, если она существует при повторном посещении, и удалить переменную и вернуться на страницу входа, если нажать кнопку выхода.
.
Однако я не могу заставить его работать, я пробую всевозможные синтаксисы... хочет ли он, чтобы переменная сессии была словарем?
Я совсем новичок и не очень хорошо разбираюсь в синтаксисе. Если кто-то может посмотреть на мои функции и помочь, я буду очень благодарен.
def investors(request):
""" A view show the investor login page (or investors page if a correct password is in session) and load the investors page if a correct password is entered. Also set a session variable that staylogged is ture if the stay logged in box is checked"""
if request.session.get(['staylogged'] == True):
return render(request, 'home/investors.html')
else:
if (request.method == 'POST'):
password = request.POST.get("password")
staylogged = request.POST.get("staylogged")
if (password == os.environ.get('INVESTOR_PASSWORD')):
if staylogged:
request.session['staylogged'] = {
'staylogged': True
}
return render(request, 'home/investors.html')
else:
return redirect('investorerror')
return render(request, 'home/investorlogin.html')
def logout(request):
"""A view to change the staylogged in session variable to false and return to the login page"""
request.session['staylogged'] = {
'staylogged':False
}
return redirect('investors')
Причина, по которой ваша проверка stay_logged
не работает, заключается в том, что GET.get()
не только получает диктуемое значение, но и по какой-то причине проверяет == True
. См. мои поправки ниже:
if request.session.get('staylogged').get('staylogged') == True:
Причина, по которой у меня два .gets
, заключается в том, что ваше значение сессии staylogged
является диктой внутри дикты сессии, которую я бы предложил удалить.