Здесь есть несколько ошибок. Основным является попытка рендеринга в форме метода login_user. Помимо всего прочего, вы пытаетесь передать self
в качестве параметра запроса для рендеринга, что не имеет смысла.
Удалите все это, если / еще. Вам не нужно оказывать; но также обратите внимание, что ваше условие if излишне неэффективно Если у вас есть пользователь, это обязательно пользователь.
Наконец, настоящая причина вашей ошибки, когда вы снова пытаетесь передать self вместо запроса, но на этот раз в качестве параметра login
. Этот код принадлежит в представлении.
И, наконец, форма не является ModelForm, поэтому метод сохранения отсутствует.
Итак, форма:
def login_user(self):
email = self.cleaned_data['email']
password = self.cleaned_data.get('password')
return authenticate(email=email, password=password)
и просмотр:
if login_form.is_valid():
user = login_form.login_user()
if user:
login(request, user)
return HttpResponseRedirect(reverse('dashboard'))
Хотя в этот момент вы также можете перенести всю эту логику в представление.