问题描述
我正在尝试引发一个错误,告诉用户用户名或电子邮件已经存在。我在注册过程中使用了UserCreationForm,并使用ValidationError来验证表单,如下所示:
# UserCreationForm
class SignUp(UserCreationForm):
email = forms.EmailField(required=True)
first_name = forms.CharField(required=True)
last_name = forms.CharField(required=True)
class Meta:
model = User
fields = ['username','first_name','last_name','password1','password2','email']
def clean_username(self):
username = self.cleaned_data.get('username')
if User.objects.filter(username=username).exists():
return forms.ValidationError('username is already exists')
return username
def clean_email(self):
email = self.cleaned_data.get('email')
if User.objects.filter(email=email).exists():
raise forms.ValidationError('email is already exists')
return email
Traceback (most recent call last):
File "/media/medo/BE4C6BE74C6B98C3/Cources/Django/all git/Django projects/Es2al/Es2al2/website/venv/lib/python3.8/site-packages/django/core/handlers/exception.py",line 47,in inner
response = get_response(request)
File "/media/medo/BE4C6BE74C6B98C3/Cources/Django/all git/Django projects/Es2al/Es2al2/website/venv/lib/python3.8/site-packages/django/core/handlers/base.py",line 202,in _get_response
response = response.render()
File "/media/medo/BE4C6BE74C6B98C3/Cources/Django/all git/Django projects/Es2al/Es2al2/website/venv/lib/python3.8/site-packages/django/template/response.py",line 105,in render
self.content = self.rendered_content
File "/media/medo/BE4C6BE74C6B98C3/Cources/Django/all git/Django projects/Es2al/Es2al2/website/venv/lib/python3.8/site-packages/django/template/response.py",line 83,in rendered_content
return template.render(context,self._request)
File "/media/medo/BE4C6BE74C6B98C3/Cources/Django/all git/Django projects/Es2al/Es2al2/website/venv/lib/python3.8/site-packages/django/template/backends/django.py",line 61,in render
return self.template.render(context)
File "/media/medo/BE4C6BE74C6B98C3/Cources/Django/all git/Django projects/Es2al/Es2al2/website/venv/lib/python3.8/site-packages/django/template/base.py",line 168,in render
with context.bind_template(self):
File "/usr/lib/python3.8/contextlib.py",line 113,in __enter__
return next(self.gen)
File "/media/medo/BE4C6BE74C6B98C3/Cources/Django/all git/Django projects/Es2al/Es2al2/website/venv/lib/python3.8/site-packages/django/template/context.py",line 244,in bind_template
updates.update(processor(self.request))
Exception Type: ValueError at /accounts/register/
Exception Value: dictionary update sequence element #0 has length 202; 2 is required
注册视图很简单:
class Register(CreateView):
template_name = 'accounts/register.html'
form_class = SignUp
success_url = reverse_lazy('accounts:login')
那么,在这种情况下,如何处理从表单到用户名和电子邮件的错误消息?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)