2017-10-04 2 views
1

J'essaye de créer un formulaire simple qui prend le nom et l'email comme entrée d'utilisateur. Mais après que je l'ai soumis, il n'est pas enregistré dans la base de données manage.py dumpdata affiche [] i.e ligne vide. S'il vous plaît aider!Impossible d'enregistrer les données de formulaire dans la base de données -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') 

formulaire contenant 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> 

app urls.py

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

s'il vous plaît, fixer tiret dans le code views.py et montrer vos urls –

+0

('fileds = '_all_'' ->' champs =' _all_'') – PRMoureu

+2

@PRMoureu en fait c'est 'fields = '__all __'' :) –

Répondre

0

Modélisation, champs de formulaire séparés et 3 vues pour la forme simple est approche très mauvaise. Essayez ceci. Définir des modèles simples.Pour Email Input, définissez Email Field, formez lui-même sa validation.

Models.py

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

Définir forms.py, si vous voulez inclure des champs de modèles, juste fields='__all__' va le faire pour vous, les caractérisaient d'autres champs de cette

forms.py

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

Simple views.py, si la méthode de requête est Get, forme renders et requête In Post, données transmises au serveur.

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

Modèle Structure

<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

pourquoi vous ajoutez 'login_required'? –

+0

l'enlever, peu importe :) – Sagar

+0

je veux dire que vous pouvez créer de nouveaux problèmes pour OP et il est absent dans la logique actuelle –