Я не могу заставить пользователя создать сессию в Django, используя пользовательский логин
Я делаю CRUD в Django, я создаю пользовательский класс Login, я сделал форму на основе AuthenticationForm, и для моего представления "class Login", у меня возникает ошибка при вызове функции login и попытке присвоить "user", чтобы django создал сессию. Я пытаюсь вытащить его из формы, но получаю ошибку:
У объекта 'WSGIRequest' нет атрибута 'form'
Я пытался получить "пользователя" без успеха
#There is forms.py
from django.contrib.auth.forms import AuthenticationForm
class FormularioLogin(AuthenticationForm):
def init(self, *args, **kwargs):
super().init(*args,**kwargs)
self.fields['username'].widget.attrs['class']= 'form-control'
self.fields['username'].widget.attrs['placeholder']= 'Username'
self.fields['password'].widget.attrs['class']= 'form-control'
self.fields['password'].widget.attrs['placeholder']= 'Password'
Существует views.py
from django.shortcuts import render from django.http import HttpResponseRedirect
from django.views.generic.edit import FormView from django.urls import reverse_lazy
from django.utils.decorators import method_decorator
from django.views.decorators.cache import never_cache
from django.views.decorators.csrf import csrf_protect
from django.contrib.auth import login
from .forms import FormularioLogin
class Login(FormView):
template_name = 'login.html'
form_class = FormularioLogin
success_url = reverse_lazy('index')
@method_decorator(csrf_protect)
@method_decorator(never_cache)
def dispatch(self, request, *args, **kwargs):
if request.user.is_authenticated:
return HttpResponseRedirect(self.get_success_url())
else:
return super().dispatch(request, *args, **kwargs)
def form_valid(self, form):
login(self.request.form.get_user()) # --- Here is the problem ---
return super().form_valid(form)