繁体   English   中英

错误“TypeError:FirstForm() 缺少 1 个必需的位置参数:'request'”

[英]Error “TypeError: FirstForm() missing 1 required positional argument: 'request'”

再会!

经常工作 views.py 时,您会遇到这种错误:

类型错误:FirstForm() 缺少 1 个必需的位置参数:“请求”

视图.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!')

Сan你告诉我问题是什么?

您的视图与表单同名,因此如果您调用FirstForm ,您将调用视图,而不是表单。

因此,最好将视图命名为不同的名称,例如first_view

def first_view(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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM