Python 表单缺少1个必需的位置参数:';请求';
我在以前的应用程序中对表单使用了相同的代码,但这次它似乎不起作用,迁移已经完成,我已经为此工作了一天,找不到一个好的解决方案来解释为什么这个表单不起作用Python 表单缺少1个必需的位置参数:';请求';,python,django,django-forms,Python,Django,Django Forms,我在以前的应用程序中对表单使用了相同的代码,但这次它似乎不起作用,迁移已经完成,我已经为此工作了一天,找不到一个好的解决方案来解释为什么这个表单不起作用 def gst_form(request): if request.method == 'POST': form = gst_form(request.POST) if form.is_valid(): form.save() return redirec
def gst_form(request):
if request.method == 'POST':
form = gst_form(request.POST)
if form.is_valid():
form.save()
return redirect("/")
else:
return HttpResponse("Details Invalid")
else:
form = gst_form()
context= {'form':form}
return render(request, 'main/form.html', context)
看起来您已经给出了视图和表单的名称。因此,这意味着当您在视图中调用
gst\u form
时,您会递归调用view函数,因此您不会构造表单
解决此问题的一个简单方法是重命名表单,例如将表单重命名为GstForm
:
class GstForm(forms.ModelForm):
# …
类GstForm(forms.ModelForm):
#…
这样就不再存在名称冲突:
from ….forms import GstForm
# …
def gst_form(request):
if request.method == 'POST':
form = GstForm(request.POST)
if form.is_valid():
form.save()
return redirect('/')
else:
form = GstForm()
context= { 'form': form }
return render(request, 'main/form.html', context)
从…表单导入GstForm
# …
def gst_表格(申请):
如果request.method==“POST”:
form=GstForm(request.POST)
如果form.is_有效():
form.save()
返回重定向(“/”)
其他:
form=GstForm()
上下文={'form':form}
返回呈现(请求'main/form.html',上下文)
此外,这也符合以下要求:
类名通常应使用大写词
约定
您确实将视图命名为与表单相同的名称。因此,您将进行递归调用,而不是构造新表单。请为表单类指定不同的名称。通常这是在
PerlCase
(而不是snake\u case
)中。非常感谢,伙计,我已经研究这个bug一个多小时了。