2016-10-27 162 views
0

我在模板中使用django表單來保存輸入數據庫的數據。 在我的看法發出請求後,響應被正確地重定向,但數據不會保存到數據庫。Django表單請求不保存數據到數據庫

我可能會錯過一些東西。但即使經過很多調試後也無法找到它。

這裏是迄今已完成:

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> 

from forms.py:

from .models import testmodel 


class MapForm(forms.ModelForm): 

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

將數據輸入到表單中後,將進入頁面/測試視圖並在頁面上顯示消息。但從後端數據沒有被保存到數據庫。 有一個人有什麼建議可以做

感謝

+1

由於您尚未發佈真實代碼而進行投票。 mapobj.save()被調用之前被調用 – e4c5

+0

編輯代碼 – user168983

+0

你確定你的表單是有效的嗎?由於您的縮進,無論哪種情況都會顯示成功 –

回答

1

在Python中,縮進事項。

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') 

在上面的代碼中,無論窗體是否實際成功,都將顯示「成功」。您需要將您的return語句向右推四個空格,並且還需要添加一個else子句,該子句處理表單無效的情況。通常情況下,只是再次顯示錶單(將自動顯示的表單錯誤是您使用form.as_pform.as_table