Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 表单缺少1个必需的位置参数:';请求';_Python_Django_Django Forms - Fatal编程技术网

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一个多小时了。