2014-06-15 5 views
0

템플릿에 유효성 검사 오류가 표시되지 않는 가입 양식이 있습니다. 잘못된 양식을 제출하면 빈 필드가있는 페이지가 다시 렌더링됩니다. 나는 양식에 서명하는 사람이 내린 오류를 보여주고 싶습니다. 여기 Django 1.6 : 양식에 오류가 표시되지 않습니다.

내가 양식을했습니다 템플릿입니다

<form action="" method="post" id="user_uploader" enctype="multipart/form-data"> {% csrf_token %} 
{{ form.non_field_errors }} 
<div class=""> 
    {{ form.name }} 
</div> 

{{ form.error_messages }} 
{{ form.help_text }} 
<div class=""> 
    {{ form.username }} 
</div> 

{{ form.non_field_errors }} 
<div class=""> 
    {{ form.email}} 
</div> 

{{ form.non_field_errors }} 
<div class=""> 
    {{ form.password1 }} 
</div> 

{{ form.non_field_errors }} 
{{ form.error_messages }} 
<div class=""> 
    {{ form.password2 }} 
</div> 

<button class="btn btn-primary" type="submit" name="submit" id="ss-submit">SIGN UP</button> 
여기

내 forms.py

class UserCreationForm(forms.ModelForm): 
    """ 
    A form that creates a user, with no privileges, from the given username and 
    password. 
    """ 
    error_messages = { 
     'duplicate_username': _("A user with that username already exists."), 
     'password_mismatch': _("The two password fields didn't match."), 
    } 
    name = forms.CharField(max_length=200, widget=forms.TextInput(attrs={'class': 'form-control','placeholder':'FirstName LastName'})) 
    email = forms.EmailField(required=True, widget=forms.TextInput(attrs={'class': 'form-control','placeholder':'Please enter a valid email address so we can reach you.'})) 
    username = forms.RegexField(label=_("Username"), max_length=50, 
     regex=r'^[\[email protected]+-]+$', 
     help_text=_("Required. 30 characters or fewer. Letters, digits and " 
        "@/./+/-/_ only."), 
     error_messages={ 
      'invalid': _("This value may contain only letters, numbers and " 
         "@/./+/-/_ characters.")}) 
    password1 = forms.CharField(label=_("Password"), 
     widget=forms.PasswordInput) 
    password2 = forms.CharField(label=_("Password confirmation"), 
     widget=forms.PasswordInput, 
     help_text=_("Enter the same password as above, for verification.")) 

    class Meta: 
     model = User 
     fields = ("name","username","password1","password2","email") 

    def clean_username(self): 
     # Since User.username is unique, this check is redundant, 
     # but it sets a nicer error message than the ORM. See #13147. 
     username = self.cleaned_data["username"] 
     try: 
      User._default_manager.get(username=username) 
     except User.DoesNotExist: 
      return username 
     raise forms.ValidationError(
      self.error_messages['duplicate_username'], 
      code='duplicate_username', 
     ) 

    def clean_password2(self): 
     password1 = self.cleaned_data.get("password1") 
     password2 = self.cleaned_data.get("password2") 
     if password1 and password2 and password1 != password2: 
      raise forms.ValidationError(
       self.error_messages['password_mismatch'], 
       code='password_mismatch', 
      ) 
     return password2 

    def save(self, commit=True): 
     user = super(UserCreationForm, self).save(commit=False) 
     user.set_password(self.cleaned_data["password1"]) 
     fullName = self.cleaned_data["name"] 
     Email = self.cleaned_data["email"] 


     if commit: 
      user.save() 
      userProfile = DoctorSeeker(user=user, name=fullName, email=Email) 
      userProfile.save() 

     return user 
그냥 내가 두에 가입 정보를 저장하고있어 명확히하는 것입니다 다른 모델.

은 여기 내 views.py

당신은 템플릿에보기에서 전달 된 form 전혀 사용하지 않는
def signup_user(request): 
    if request.method == 'POST': 
     form = UserCreationForm(request.POST,request.FILES) 
     if form.is_valid(): 
      new_user = form.save() 
      new_user = authenticate(username=request.POST['username'],password=request.POST['password1']) 
      login(request, new_user) 

      return HttpResponseRedirect(reverse('index')) 
    else: 
     form = UserCreationForm() 
    return render(request, "meddy1/signup.html", {'form': form,'usersignup':True}) 

답변

2

입니다. 각 양식 요소를 수동으로 렌더링하고 있습니다. 이 문서에서 워드 프로세서 here

<form action="/contact/" method="post"> 
    {% for field in form %} 
     <div class="fieldWrapper"> 
      {{ field.errors }} 
      {{ field.label_tag }} {{ field }} 
     </div> 
    {% endfor %} 
    <p><input type="submit" value="Send message" /></p> 
</form> 

을 같이 오히려 당신은 당신은 정장으로 당신을 HTML을 생성하는 div의 등을 추가 할 수 있습니다 선호하는 방법을 사용한다.

+0

설명서를 따라 템플릿을 사용자 지정하려고했습니다. 그러나 여전히 오류는 보이지 않습니다. 위의 템플릿을 업데이트했습니다. –

+1

@HarisAghadi, 전자 메일 필드의 경우 오류는'{{form.email.errors}} '에 있으며,이 필드 오류를 표시하지 않습니다. – Rohan

관련 문제