我正在构建一个测试应用程序以将数据插入到数据库中,并且我继续在分配之前获得错误“局部变量'形式'”。我读了一些文章,我不明白如果方法不是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']
答案 0 :(得分:1)
你的其他声明缩进太多了。将它向后移动一级。
另外两点:您应该在验证后从表单中获取数据,而不是直接来自POST:
amount = form.cleaned_data['amount']
cost = form.cleaned_data['cost']
其次,你可以通过使用ModelForm使其更简单。