2017-10-04 145 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

('的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

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

简单的views.py,如果请求方法是Get,表单呈现并且在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创建新的麻烦,并且它在编辑的当前逻辑 –