Python 我的密码存储在Django admin的电子邮件字段中
我有一个存储两个表单数据的视图。我的第二张表格的数据很好。但是对于主用户表单,我只想存储用户名、密码并进行密码确认。创建用户时,出于某种原因,密码会存储在电子邮件字段中Python 我的密码存储在Django admin的电子邮件字段中,python,django,Python,Django,我有一个存储两个表单数据的视图。我的第二张表格的数据很好。但是对于主用户表单,我只想存储用户名、密码并进行密码确认。创建用户时,出于某种原因,密码会存储在电子邮件字段中 class UserForm(forms.ModelForm): password = forms.CharField(label='Password', max_length=32, required=True, widget=forms.PasswordInput) confirm_password = fo
class UserForm(forms.ModelForm):
password = forms.CharField(label='Password', max_length=32, required=True, widget=forms.PasswordInput)
confirm_password = forms.CharField(label='Confirm', max_length=32, required=True, widget=forms.PasswordInput, help_text="Passwords must match!")
def clean(self):
cleaned_data = super(UserForm, self).clean()
password = cleaned_data.get("password")
confirm_password = cleaned_data.get("confirm_password")
if password != confirm_password:
raise forms.ValidationError(
"password and confirm_password does not match"
)
class Meta:
model = User
fields = ('username', 'password')
exclude = ('email',)
def student_register(request, user):
data = dict()
if request.method == 'POST':
form1 = UserForm(request.POST)
form2 = StudentForm(request.POST, request.FILES)
if form1.is_valid() and form2.is_valid():
cd1 = form1.cleaned_data
user.username = cd1["username"]
user.password = cd1["password"]
user.confirm_password = cd1["confirm_password"]
new_user = User.objects.create_user(user.username, password, confirm_password)
new_user.save()
cd2 = form2.cleaned_data
name = cd2['name']
surname = cd2['surname']
email = cd2['email']
phone = cd2['phone']
student_id = cd2['student_ID']
photo = cd2['photo']
Student.objects.create(user=new_user, name=name, surname=surname, email=email, phone=phone,
student_ID=student_id, photo=photo)
return redirect('index')
else:
form1 = UserForm()
form2 = StudentForm()
data['form1'] = form1
data['form2'] = form2
return render(request, "student_signup_form.html", data)
该方法的第二个参数是
email
。更改代码,以便将密码
作为关键字参数传递。您不需要在该行中确认密码
new_user = User.objects.create_user(user.username, password=password)
摘自以下来源: 注意如何调用
User.objects.create_User(…)
,第二个参数是password
。从该方法的签名可以看出,密码
作为电子邮件
传递<代码>确认\u密码根本不应传入:
new_user = User.objects.create_user(user.username, password=password)
现在还不清楚
def student_register(request,user):
中的用户是干什么的,或者为什么要设置user.username=cd1[“username”]
-我希望该代码在这一点上会给出错误。我删除了它。忘记编辑此代码。
new_user = User.objects.create_user(user.username, password=password)