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})
설명서를 따라 템플릿을 사용자 지정하려고했습니다. 그러나 여전히 오류는 보이지 않습니다. 위의 템플릿을 업데이트했습니다. –
@HarisAghadi, 전자 메일 필드의 경우 오류는'{{form.email.errors}} '에 있으며,이 필드 오류를 표시하지 않습니다. – Rohan