如何为UserCreationForm中的特定输入引发错误?

问题描述

我正在尝试引发一个错误,告诉用户用户名或电子邮件已经存在。我在注册过程中使用了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

但是当我按Enter键看到错误时,我得到了该错误

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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...