如何针对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

那么,在这种情况下,如何处理从表单到用户名和电子邮件错误消息?

我尝试了诸如 full_clean clean 之类的干净属性中的所有可用可能性。请如果您可以使用UserCreationForm回答,将不胜感激

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

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