python - 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'”
我真的不知道该怎么做以及为什么这个错误甚至是一件事。
解决方案
正如阿卜杜勒·阿齐兹·巴尔卡特所说,
form.cleaned_data.get('用户名', '')
实际上是解决方案。
推荐阅读
- python - 导入模块在 Jupyter 笔记本和解释器中的行为不同?
- android - 在Android Studio中设计背景时如何使所有子视图保持不透明而其父视图透明
- node.js - 在 `vue create` 过程中遇到这些错误信息是否正常?
- java - 通过会话 id cookie 而不是 JWT 连接到 Android 上的 REST API
- mongodb - Mongodb子文档数组查找子文档数组
- django - Django模板过滤器将字符串转换为单项列表
- python - Python 提取数据
- unity3d - 如何消除 3D 统一运动中的滑行?
- android - 如何在用户与活动交互时连续获取 GPS 位置并基于此更改 UI?
- c# - 带有用户凭据提示的 MVC Windows 身份验证