我在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。 有人可以建议可以做什么
由于
答案 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
)