首页 > 解决方案 > Django AttributeError 'CreateUserForm' 对象没有属性 'username'

问题描述

我正在尝试创建用户注册页面,为此,我使用默认的 UserCreationForm。我想通过他们的电话号码注册用户,所以我改变了这个表格:

class CreateUserForm(UserCreationForm):
    restriction = RegexValidator(r'^[0-9]*$')
    username = forms.CharField(max_length=11, validators=[restriction])
    class Meta:
        model = User
        fields = ['username', 'first_name', 'password1', 'password2']

有部分注册视图功能:

if form.is_valid():
    #save form and redirect
elif len(form.cleaned_data['password1']) < 8:
    messages.error(request, 'Password is too short')
elif form.cleaned_data['username'].isnumeric() == False:
    messages.error(request, 'Enter valid phone number!')

因此,如果表单无效,它会检查密码或电话号码是否错误,但在检查电话时,它会返回“KeyError at /registration/”和“Exception Value: 'username'”。如果我将 form.cleaned_data['username'] 更改为 form.username,它会返回“Django AttributeError 'CreateUserForm' object has no attribute 'username'”

我真的不知道该怎么做以及为什么这个错误甚至是一件事。

标签: pythondjango

解决方案


正如阿卜杜勒·阿齐兹·巴尔卡特所说,

form.cleaned_data.get('用户名', '')

实际上是解决方案。


推荐阅读