Как использовать объект Httprequest в FormView? - PullRequest
0 голосов
/ 06 мая 2020

Я преобразовывал представленный ниже вид функции в представление на основе классов: но проблема заключалась в том, что приведенный ниже код входа в систему использует объект запроса. Итак, как использовать этот запрос в представлении формы.

Функциональное представление, которое я хотел изменить на представление на основе классов:


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'
...