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

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

단순한 views.py는 요청 방법이 Get, 양식 렌더링 및 In 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에 대한 새로운 문제를 만들 수 있으며 현재 논리 –