我在[{1}}
中查看source code
UserCreationForm
我注意到的是以下内容:
django.contrib.auth.forms
为什么需要在class Meta:
model = User
fields = ("username",)
中明确提及此("用户名",)。因为fields
再次定义了username
字段。为什么?为什么UserCreationForm
未包含在上述Password fields
定义中?
Meta class
答案 0 :(得分:2)
fields
属性存在,因为没有它,该模型中的所有字段都将显示在表单上(ModelForm的默认行为是显示模型中的所有字段,在缺少"字段"或"排除"属性)。
password
字段不在其中,因为表单上显示的密码字段实际上并非存储在模型中的密码字段 - 模型中的密码字段是散列密码,而表格上显示的是普通文本字段。因此,处理此表单的代码会获取这些文本密码,确保它们相同,然后创建" real"密码并存储在模型中。