/ vnos /的UnboundLocalError

时间:2016-02-06 16:45:53

标签: python django

我正在构建一个测试应用程序以将数据插入到数据库中,并且我继续在分配之前获得错误“局部变量'形式'”。我读了一些文章,我不明白如果方法不是POST,我应该如何解决问题。

我尝试使用此测试应用程序的所有操作是转到指定页面,在字段中插入一些数字然后提交它们。之后我想检查数据库是否正确提交。

views.py

def cost(request):
if request.method == 'POST':
    form = CostForm(request.POST)
    if form.is_valid():
        amount = request.POST.get('amount', '')
        cost = request.POST.get('cost', '')
        cost_obj = Cost(amount = amount, cost = cost)
        cost_obj.save()

        return HttpResponseRedirect('/vnos/')
    else:
        form = CostForm()

return render(request, "cost.html", {'form': form})

models.py

class Cost(models.Model):
cost = models.FloatField()
amount = models.FloatField()

forms.py

class CostForm(forms.Form):
date = forms.DateField()
amount = forms.FloatField()

class Meta:
    model = Cost
    fields = ['cost', 'amount']

1 个答案:

答案 0 :(得分:1)

你的其他声明缩进太多了。将它向后移动一级。

另外两点:您应该在验证后从表单中获取数据,而不是直接来自POST:

    amount = form.cleaned_data['amount']
    cost = form.cleaned_data['cost']

其次,你可以通过使用ModelForm使其更简单。