2017-10-04 14 views
1

ユーザー入力として名前と電子メールを使用する単純なフォームを作成しようとしています。 しかし、私が提出した後、データベースに保存されていません manage.py dumpdataは[]すなわち空の行を示しています。 助けてください!フォームを含むデータベースにフォームデータを保存する-Django

models.py

class EmpD(models.Model): 
    name = models.CharField(max_length=100) 
    email=models.CharField(max_length=100) 

forms.py

class SubmitF(forms.ModelForm): 
    name = forms.CharField() 
    email= forms.CharField() 
    class Meta: 
     model = EmpD 
     fileds = '_all_' 

views.py

def submit_view(request): 
template_name = 'emp/home.html' 
redirect_url = 'emp/su.html' 
form = SubmitF() 

if request.method == 'POST': 
    form = SubmitF(request.POST) 
    if form.is_valid(): 
     form.save() 

     return HttpResponseRedirect(redirect_url) 
else: 
    return render(request, template_name, {'form': form}) 

def index(request): 
return render(request, 'emp/home.html') 

HTML:

<form action='' method="post" > 

{% csrf_token %} 
{{ form }} 

<table border="0" cellpadding="5" cellspacing="0"> 
<tr> <td style="width: 50%"> 
<label for="Name"><b>First name *</b></label><br /> 
<input name="Name" type="text" maxlength="50" style="width: 260px" /> 
</td> <td style="width: 50%"> 

</td> </tr> <tr> <td colspan="2"> 
<label for="Email_Address"><b>Email *</b></label><br /> 
<input name="Email_Address" type="text" maxlength="100" style="width: 535px" 
/> 
</td> </tr> <tr> <td colspan="2"> 



<input type="submit" value="Submit Data" /> 

</td> </tr> 
</table> 
</form> 
単一のフォームのため

アプリurls.py

urlpatterns = [ 
url(r'^$', views.index, name='index'), 
url(r'^$', views.submit_view, name='submit_view')] 
+0

てください、views.pyコードにインデントを修正し、 –

+0

あなたのURLを表示( 'fileds = '_all_'' - >'フィールド=' _all_'') – PRMoureu

+2

@PRMoureu実際に 'fields = '__all __'' :) –

答えて

0

モデリング、別個のフォームフィールドと3つのビューは非常に悪いアプローチです。 これを試してください。単純なモデルを定義します。電子メール入力の場合、電子メールフィールドを定義し、フォーム自体が検証を行います。

あなたがモデルのフィールドを追加するにはModels.pyは

class EmpD(models.Model): 
    name = models.CharField(max_length=100) 
    email = models.EmailField(null=True, blank=True) 

、forms.pyを定義し、ちょうどfields='__all__' は、そうでない場合は、このフォームで他のフィールドを定義し、あなたのためにそれを行います

forms.pyリクエストメソッドがGETの場合

class SubmitF(forms.ModelForm): 
    class Meta: 
     model = EmpD 
     fields = '__all__' 

シンプルviews.pyは、フォームをレンダリングし、POSTリクエストでは、データはサーバに渡さ。

def submit_view(request): 
    template_name = 'path_to_html' 
    redirect_url = 'your_url' 
    form = SubmitF() 

    if request.method == 'POST': 
     form = SubmitF(request.POST) 
     if form.is_valid(): 
      form.save() 
      return HttpResponseRedirect(redirect_url) 
    else: 
     return render(request, template_name, {'form': form}) 

テンプレート構造

<form action="/your-name/" method="post"> 
    <label for="name">Your name: </label> 
    <input id="id_name" type="text" name="name" value="{{ current_name }}"> 
    <input type="submit" value="OK"> 
</form> 
+0

なぜあなたは 'login_required'を追加しますか? –

+0

それを削除しても問題ありません:) – Sagar

+0

私はあなたがOPのために新たなトラブルを作成することができ、現在のロジック –

関連する問題