Ошибка «TypeError: FirstForm () отсутствует 1 обязательный позиционный аргумент: 'запрос'» - PullRequest
1 голос
/ 29 мая 2020

Добрый день!

При постоянной работе views.py вы получаете такую ​​ошибку:

TypeError: FirstForm () отсутствует 1 обязательный позиционный аргумент: 'request'

Views.py

def FirstForm(request):
if request.method == 'GET':
    form = FirstForm()
else:
    form = FirstForm(request.POST)
    if form.is_valid():
        name = form.cleaned_data['name']
        email = form.cleaned_data['email']
        date = form.cleaned_data['date']
        number = form.cleaned_data['number']
        try:
            send_mail(email, (name, date, number), settings.EMAIL_HOST_USER, ['daribian@list.ru'])
        except BadHeaderError:
            return HttpResponse('Invalid header found.')
        return redirect('success')
return render(request, 'index.html', {'form': form})

def successView(request):
    return HttpResponse('Success!')

Подскажите, в чем проблема?

1 Ответ

0 голосов
/ 29 мая 2020

Ваше представление имеет то же имя, что и форма, поэтому, если вы вызываете FirstForm, вы будете вызывать представление, а не форму.

Поэтому лучше назвать представление, например, другим first_view:

def <b>first_view</b>(request):
    if request.method == 'GET':
        form = FirstForm()
    else:
        form = FirstForm(request.POST, request.FILES)
        if form.is_valid():
            name = form.cleaned_data['name']
            email = form.cleaned_data['email']
            date = form.cleaned_data['date']
            number = form.cleaned_data['number']
            try:
                send_mail(email, (name, date, number), settings.EMAIL_HOST_USER, ['daribian@list.ru'])
            except BadHeaderError:
                return HttpResponse('Invalid header found.')
            return redirect('success')
    return render(request, 'index.html', {'form': form})

Примечание : согласно PEP-8 , вы должны писать функции в snake_case , а не camelCase , поэтому success_view вместо successView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...