美好的一天!
经常工作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, ['[email protected]'])
except BadHeaderError:
return HttpResponse('Invalid header found.')
return redirect('success')
return render(request, 'index.html', {'form': form})
def successView(request):
return HttpResponse('Success!')
你告诉我问题是什么?
您的视图与表单具有相同的名称,因此,如果调用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, ['[email protected]'])
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句