为什么在 Django 中 post 方法认为是空表单并返回代码 200?

问题描述 投票:0回答:1

发送空白表格时。而不是跳过条件并渲染相同的表单。相反,它返回一个空表单并给出代码 200

   class ContactView(View):
        def get(self, request):
            form = ContactModelForm()
            return render(request, 'contact/contact_us.html', {'forms': form})

        def post(self, request):
            if request.method == 'POST':
               form = ContactModelForm(request.POST)
               if form.is_valid():
                  form.save()
                  return redirect('home')
           form = ContactModelForm()
           return render(request, 'contact/contact_us.html', {'forms': form})
django django-views django-forms django-templates
1个回答
0
投票

您应该只在 GET 情况下构造一个新表单,所以:

class ContactView(View):
    def get(self, request):
        form = ContactModelForm()
        return render(request, 'contact/contact_us.html', {'forms': form})

    def post(self, request):
        form = ContactModelForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return redirect('home')
        # form = ContactModelForm()
        return render(request, 'contact/contact_us.html', {'forms': form})

在这种情况下,您还可以通过使用

CreateView
来改善视图:

类ContactView(视图): 模板名称= def get(自身, 请求): 表单 = ContactModelForm() return render(request, 'contact/contact_us.html', {'forms': form})

def post(self, request):
    form = ContactModelForm(request.POST, request.FILES)
    if form.is_valid():
        form.save()
        return redirect('home')
    # form = ContactModelForm()
    return render(request, '', {'forms': form})
© www.soinside.com 2019 - 2024. All rights reserved.