Django Form请求不将数据保存到db

时间:2016-10-27 10:39:30

标签: python django database templates

我在atemplate中使用django表单来保存输入到数据库的数据。 在我的视图中,在发出请求后,响应被正确重定向,但数据未保存到db。

我可能会遗漏一些东西。但即使经过大量调试,我也无法找到它。

这是迄今为止所做的工作:

views.py:

from .models import testmodel

def testview(request):
    if request.method== 'POST':
        form=MapForm(request.POST)
        if form.is_valid():
            test1=request.POST.get('t1')
            print meaningid1
            test2=request.POST.get('t2')
            print meaningid2
            pobj=testmodel(test1=test1,test2=test2)
            pobj.save()
        return HttpResponse('Successful')

之后会看到响应消息“成功”

来自模板:

 <form action="/testview/" method="post"> {% csrf_token %}
 {{form.as_p}}
 <input type="text" name="t1" value='' id='t1'/> <br><br><br>
  <input type="text" name="t2" value='' id='t2'/><br>
  <input type="submit" value="Submit" />
 </form>
来自forms.py:

from .models import testmodel


class MapForm(forms.ModelForm):

    class Meta:
        model = testmodel
        fields = ['test1','test2']

在表单中输入数据后,它将转到page / testview并在页面上显示消息。但是从后端数据还没有保存到db。 有人可以建议可以做什么

由于

1 个答案:

答案 0 :(得分:1)

在python中,缩进很重要。

["Field1","Field2","Field3","Field4"]

在上面的代码中&#39;成功&#39;无论表单是否实际成功,都会显示。您需要将return语句向右推四个空格,并且还需要添加一个else子句来处理表单无效的情况。通常,这只是为了再次显示表单(表单错误会自动显示给您使用def testview(request): if request.method== 'POST': form=MapForm(request.POST) if form.is_valid(): test1=request.POST.get('t1') print meaningid1 test2=request.POST.get('t2') print meaningid2 pobj=testmodel(test1=test1,test2=test2) pobj.save() return HttpResponse('Successful') form.as_p