Я пытаюсь сделать функцию "запомнить меня" на странице входа в систему, используя встроенный в django auth view
from django.contrib.auth.views import LoginView из django.contrib.auth.forms import AuthenticationForm
class MyLoginView(LoginView): def get_form_kwargs(self): kwargs = super().get_form_kwargs() kwargs['request'] = self.request # print(self.get_initial(),'--------1') return kwargs
def get_form_class(self):
if self.request.POST:
if self.request.POST.get('remember'):
self.request.session['usernameS'] = self.request.POST['username']
self.request.session['passwordS'] = self.request.POST['password']
self.request.session['remember'] = True
self.initial = {
'username':self.request.session.get('usernameS'),
'password':self.request.session.get('passwordS'),
'remember':self.request.session.get('remember')
}
print(self.initial)
return self.authentication_form or self.form_class
Но всякий раз, когда я выхожу из системы, он не показывает начальные значения##
Он показывает None
, потому что вы инициализировали вашу форму, где начальными значениями являются сами None
, чтобы исправить это, просто сделайте небольшое изменение в вашем self.initial
словаре
self.initial = {
'username':self.request.session.get('usernameS') or '',
'password':self.request.session.get('passwordS') or '',
'remember':self.request.session.get('remember') or False,
}