首页 > 解决方案 > 表单缺少 1 个必需的位置参数:“请求”

问题描述

我在以前的应用程序中对表单使用了相同的代码,但这次它似乎不起作用,迁移已经完成,我已经在这一天了,无法找到一个很好的解决方案来解释为什么这个表单不起作用。

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)

标签: pythondjangodjango-forms

解决方案


看起来您已经将视图和表单gst_form作为名称。因此,这意味着当您在视图中调用时gst_form,您对视图函数进行了递归调用,因此您不会构造表单。

解决此问题的一种简单方法是重命名您的表单,例如GstForm

class 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)

此外,这也符合PEP-0008 风格指南

类名通常应该使用CapWords约定


推荐阅读