2016-10-27 7 views
0

データベースに入力されたデータを保存するためにatemplateにdjango形式を使用しています。 私の見解では、要求が行われた後、応答は正しくリダイレ​​クトされますが、データはdbに保存されません。Djangoフォーム要求がデータをdbに保存しない

何か不足している可能性があります。多くのデバッグの後でもそれを見つけることができません。ここ

は、これまで行われてきたものです。

views.py:

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

forms.py:

from .models import testmodel 


class MapForm(forms.ModelForm): 

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

フォームにデータを入力した後、page/testviewに行き、ページにメッセージを表示します。バックエンドのデータはdbに保存されていません。 は、いくつかのいずれかが

おかげで、Pythonで

+1

あなたの実際のコードを投稿していないため投票が無効です。定義の前にmapobj.save()が呼び出されました – e4c5

+0

コードが編集されました – user168983

+0

フォームが有効ですか?あなたの押し込みのためにどちらの場合でも成功が表示されます –

答えて

1

、インデントの事項を行うことができるものを提案することができます。

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文を右に4スペース分移動する必要があります。フォームが有効でない状況を処理するelse節も追加する必要があります。通常、フォームを再度表示するだけです(実際にフォームエラーが表示されるのは、form.as_pまたはform.as_tableです)

関連する問題