显示ModelForms的django表单验证错误

时间:2013-11-24 01:33:34

标签: python django forms validation

我经常发现自己在视图中使用ModelForm来显示和翻译视图。我在模板中显示表单没有问题。我的问题是,当我使用这些时,表单通常不会使用is_valid方法进行验证。问题是我不知道导致验证错误的原因。

以下是视图中的基本示例:

def submitrawtext(request):
    if request.method == "POST":
        form = SubmittedTextFileForm()
        if form.is_valid():
           form.save()
           return render(request, 'upload_comlete.html')
        return render(request, 'failed.html')
    else:
        form = SubmiittedTextFileForm()
        return render(request, 'inputtest.html', {'form': form})

我知道表单没有验证,因为我被重定向到failed.html模板,但我不知道为什么.is_valid是false。如何设置它以向我显示表单验证错误?

2 个答案:

答案 0 :(得分:8)

一些事情:

  1. 您没有将POST发送到POST。

  2. 要查看错误消息,您需要渲染回相同的模板。

  3. 试试这个:

    def submitrawtext(request):
        if request.method == "POST":
            form = SubmittedTextFileForm(request.POST)
            if form.is_valid():
               form.save()
               return render(request, 'upload_comlete.html')
            else:
               print form.errors #To see the form errors in the console. 
        else:
            form = SubmittedTextFileForm()
        # If form is not valid, this would re-render inputtest.html with the errors in the form.
        return render(request, 'inputtest.html', {'form': form})
    

答案 1 :(得分:2)

我遇到了同样烦人的问题,并通过用 HttpResponse 返回 form.errors.values() 来解决它。代码如下:

@csrf_exempt
def post(request):

    form = UserForm(request.POST)

    if form.is_valid():
        return HttpResponse('All Good!')
    else:
        return HttpResponse(form.errors.values())  # Validation failed

就我而言,它返回了:

<ul class="errorlist"><li>This field is required.</li></ul>
<ul class="errorlist"><li>This field is required.</li></ul>
<ul class="errorlist"><li>This field is required.</li></ul>
<ul class="errorlist"><li>This field is required.</li></ul>

它没有提供太多信息,但足以给你一个想法。