내 registration
에서 나는 email-id
이 고유하다는 것을 강조하고 있습니다. 즉, 해당 이메일 ID가있는 사용자가 있다면 raise
은 forms.ValidationError
입니다.등록시 이메일 확인이 장고에서 validationError를 발생시키지 않았습니까?
여기 내 form.py
입니다 :
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
class MyRegistrationForm(UserCreationForm):
#define fields
email=forms.EmailField(required=True)
class Meta:
model=User
fields=('username','email','password1','password2')
def clean_email(self):
email = self.cleaned_data["email"]
try:
user = User.objects.get(email=email)
print user.email
print user.username
raise forms.ValidationError("This email address already exists. Did you forget your password?")
except User.DoesNotExist:
return email
def save(self, commit=True):
user = super(MyRegistrationForm, self).save(commit=False)
user.email=self.cleaned_data["email"]
if commit:
user.save()
return user
내 view.py
:
def register_user(request):
if request.method=='POST':
form=MyRegistrationForm(request.POST)
if form.is_valid():
form.save()
messages.success(request, "Thank you for signing up")
return HttpResponseRedirect("/accounts/register_success")
args={}
args['form']=MyRegistrationForm()
return render(request,"register.html",args)
내가 같은 이메일 ID와 register
user
, 그것은 validationError
를 포기하지 않을 때. register.html
만 반환하면 중복 된 사용자는 추가되지 않습니다.
왜 던지지 않는가 validationError
?
User.object.get(email=email)
에서 얻을
username
및
email
을
print
하는
forms.py (above)
에
print
문장의 몇 가지를 추가하고 그것을 올바르게
name
이전
registered user
의
email id
인쇄합니다. 그래서 제어가까지 진행하지만 나는 또한
brand new user
을 생성하지만,
passoword
필드
Not match
을 가진 시도
validationError
EDIT:
을 던지는되지 않습니다. 여전히 메시지가 표시되지 않습니다. error
. 하지만 단순히 register.html
EDIT로 리디렉션 :
이 템플릿에서template/register.html
{% extends "base.html" %}
{% block content %}
<h2>Register</h2>
<form action="" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="register"/>
</form>
{% endblock %}
는 error
는 자동으로 바로 field
error occurs
위에 표시됩니다. 나는 {{form.email.error}} 할 필요가 없다. 그러나 error
을 사용자 정의 할 방법이 없습니다. 예 : bold
또는 일부 CSS. 그게 가능하니?
합니다. 템플릿에''{{form.errors}}''를 추가하고 무슨 일이 일어나는 지보십시오. – Serafeim
템플릿에 아직 도움이되지 않은 것을 추가했습니다. – eagertoLearn