Я преобразовывал представленный ниже вид функции в представление на основе классов: но проблема заключалась в том, что приведенный ниже код входа в систему использует объект запроса. Итак, как использовать этот запрос в представлении формы.
Функциональное представление, которое я хотел изменить на представление на основе классов:
def login(request):
if request.method == 'GET':
form = UserLoginForm()
elif request.method == 'POST':
form = UserLoginForm(request.POST)
if form.is_valid():
username = form.cleaned_data.get('name')
password = form.cleaned_data.get('password')
user = User.objects.filter(name=username, password=password).first()
if user is not None:
request.session['user'] = username
return redirect('index')
else:
messages.error(request, 'Username or password no matched')
return render(request, 'products_app/login.html', {'form': form})
Представление на основе FormView / класса приведенного выше кода, которое я изменил на это выдает ошибку:
class Login(FormView):
template_name = 'products_app/login.html'
form_class = UserLoginForm
success_url = reverse_lazy('index')
def form_valid(self, form):
username = form.cleaned_data.get('name')
password = form.cleaned_data.get('password')
user = User.objects.filter(name=username, password=password).first()
if user is not None:
request.session['user'] = username
else:
messages.error(request, 'Username or password no matched')
super().form_valid(form)
здесь проблема в том, что запрос не принимается, в отличие от функционального представления выше def login (request). поэтому дает ошибку:
module 'django.http.request' has no attribute 'session'