使用django中的get方法验证表单

时间:2018-02-07 10:00:34

标签: python django

我是编程新手,我希望我的问题不是很基础。在这里,我试图在同一页面上输入并显示输出。 我阅读了一篇文章说我应该使用GET方法。

我的view

def calc(request):
    if request.method == 'GET':
        form = CalculationForm(request.GET)
        if form.is_valid():
            number1 = form.cleaned_data.get('first_number')
            number2 = form.cleaned_data.get('second_number')
            sum = number1 + number2
            sum.save()
            return render(request, 'calculation\calculator.html', {'sum': sum})
    else:
        form = CalculationForm()
    return render(request, 'calculation\calculator.html', {'form': form})

我的HTML

<body>
    <form  method="get" action=".">{% csrf_token %}
    {{ form }}
    <input type="submit" name="Register"  value="Submit" />
    {{sum}}
</body>

这里我展示的是用户简单表格

  • 两个字段中的用户输入数字
  • 添加数字
  • 在同一页面上将其显示回用户

我的表单正在呈现并且字段显示我能够在字段中输入数字但是当我单击提交时我收到错误。任何人

1 个答案:

答案 0 :(得分:0)

当您收到错误时,您应该在问题中显示错误,而不是仅仅说“我收到错误”。

这里的主要问题是请求方法始终是GET,因为这就是表单的提交方式。因此,即使首次显示页面,您的if语句也始终为真。

你需要打开别的东西。一个想法是使用提交按钮是其他输入的事实,因此将包含在提交的数据中。所以:

if 'Submit' in request.GET:
    form = CalculationForm(request.GET)
    ...

请注意,当您致电sum.save()时,您会遇到其他错误。 sum这里是一个整数,所以当你在它上面调用“save”时,你不清楚你想要做什么。