2012-04-19 3 views
0

양식을 채우고 제출하십시오. 빈 암호 필드가있는 페이지가 다시로드되고 데이터베이스에 Verifypassword와 같지 않은 암호가 포함되어 있어도 아무것도 제출되지 않습니다. ValidationError가 표시되지 않습니다. ... forms.py데이터베이스에 사용자를 추가 할 수 없습니다.

U 감사

class SignUpForm(ModelForm): 
    username  = forms.CharField(label=(u'Username')) 
    first_name = forms.CharField(label=(u'First name')) 
    last_name  = forms.CharField(label=(u'Last name')) 
    address  = forms.CharField(label=(u'Address')) 
    email   = forms.EmailField(label=(u'Email Address')) 
    password  = forms.CharField(label=(u'Password'),widget=forms.PasswordInput(render_value=False)) 
    password1  = forms.CharField(label=(u'Verify Password'),widget=forms.PasswordInput(render_value=False)) 
    mobile  = forms.IntegerField(label=(u'Mobile')) 

    class Meta: 
     model = Employer 
     ## check whats Exclude !!!! 
     exclude = ('user',) 

def clean_username(self): 
     username = self.cleaned_data['username'] 
     try: 
      User.objects.get(username=username) 
     except User.DoesNotExist: 
      return username 

      raise forms.ValidationError("That username already exists. Please select another") 

def clean(self): 
     if self.cleaned_data['password'] != self.cleaned_data['password1']: 
      raise forms.ValidationError("not matched") 
     return self.cleaned_data 

view.py

def EmployerRegistration(request): 
    if request.user.is_authenticated(): 
     return HttpResponseRedirect('/profile/') 
    if request.method == 'POST': 
     form = SignUpForm(request.POST) 
     if form.is_valid(): 
      employer =Employer.objects.create(username=form.cleaned_data["username"],password= form.cleaned_data['password'],first_name=form.cleaned_data['first_name'],last_name=form.cleaned_data['last_name'],email=form.cleaned_data['email'],address=form.cleaned_data['address'],mobile=form.cleaned_data['mobile']) 
      employer.save() 
      return HttpResponseRedirect('/login/') 



     else: 
       return render_to_response('Sign_up_Employer.html',{'form':form}, context_instance=RequestContext(request)) 


    else: 
    #user is not submitting show them the registeration form 
      form= SignUpForm() 
      context = {'form':form} 
      return render_to_response('Sign_up_Employer.html',context,context_instance=RequestContext(request)) 

Sign_Up_Employer.html

{%block content%} 
<form action ="" method ="post"> 
{% csrf_token %} 
{% if form.errors %}<p>Please Correct </p> {% endif %} 
<div class ="register_div"> 
{%if form.username.errors%}<p class= "error">{{form.username.errors}}</p>{% endif %} 
<p> <label for ="username"{% if form.username.errors %} class= "error"{% endif %}> Username</label></p> 
<p>{{form.username}}</p> 
</div> 
<div class ="register_div"> 
{%if form.first_name.errors%}<p class= "error">{{form.first_name.errors}}</p>{% endif %} 
<p> <label for ="first_name"{% if form.first_name.errors %} class= "error"{%endif%}>First name</label></p> 
<p>{{form.first_name}}</p> 
</div> 
<div class ="register_div"> 
{%if form.last_name.errors%}<p class= "error">{{form.last_name.errors}}</p>{% endif %} 
<p> <label for ="last_name"{% if form.last_name.errors %} class= "error"{%endif%}>Last name</label></p> 
<p>{{form.last_name}}</p> 
</div> 
<div class ="register_div"> 
{%if form.address.errors%}<p class= "error">{{form.address.errors}}</p>{% endif %} 
<p> <label for ="address"{% if form.address.errors %} class= "error"{%endif%}>Address'</label></p> 
<p>{{form.address}}</p> 
</div> 
<div class ="register_div"> 
{%if form.email.errors%}<p class= "error">{{form.email.errors}}</p>{% endif %} 
<p> <label for ="email"{% if form.email.errors %} class= "error"{%endif%}>Email Address</label></p> 
<p>{{form.email}}</p> 
</div> 
<div class ="register_div"> 
{%if form.password.errors%}<p class= "error">{{form.password.errors}}</p>{% endif %} 
<p> <label for ="password"{% if form.password.errors %} class= "error"{%endif%}>Password</label></p> 
<p>{{form.password}}</p> 
</div> 

<div class ="register_div"> 
{%if form.password1.errors%}<p class= "error">{{form.password1.errors}}</p>{% endif %} 
<p> <label for ="password1"{% if form.password1.errors %} class= "error"{%endif%}>Verify Password</label></p> 
<p>{{form.password1}}</p> 
</div> 

<div class ="register_div"> 
{%if form.mobile.errors%}<p class= "error">{{form.mobile.errors}}</p>{% endif %} 
<p> <label for ="mobile"{% if form.mobile.errors %} class= "error"{%endif%}>Mobile</label></p> 
<p>{{form.mobile}}</p> 
</div> 
<p><input type =submit alt =register></p> 
</form> 
{% endblock %} 
+2

문제의 원인은 아니지만 (a) 모든 필드를 명시 적으로 정의하고 (b) 'form.save()'를 수행하는 대신 cleaned_data에서 수동으로 객체를 생성하여 modelforms의 모든 부분을 무시합니다. . –

+0

우리는 html 템플릿을 볼 수 있습니까? –

+0

html 템플릿을 추가했습니다 – May

답변

1

나는 (그것이 다른 (삭제) 문제가 동일하기 때문에, 그럴 생각하는 경향이있어 비록)이 그냥 잘라 내기 및 붙여 넣기 문제가있는 경우 이야기하지만, 들여 쓰기가 없습니다 두 clean 방법이 잘못되었습니다. 현재 ModelForm 클래스의 일부가 아니므로 호출되지 않습니다. 들여 쓰기는 한 수준 들여 쓰기이므로 class Meta과 같은 수준입니다.

0

내 생각에 HTML 템플릿에서 양식의 method 속성을 POST으로 설정하지 않았습니다.

<form method="post"> 
+0

작성하지 않았습니다. – May

관련 문제