Python 用户数据库中未设置密码

Python 用户数据库中未设置密码,python,django,Python,Django,我正在尝试从基类UserCreationForm创建注册表单,并在django中添加电子邮件字段。代码如下 form.py class ussignup(UserCreationForm): email=forms.EmailField(required=True) first_name=forms.CharField(required=False) last_name=forms.CharField(required=False) class Meta: model=U

我正在尝试从基类UserCreationForm创建注册表单,并在django中添加电子邮件字段。代码如下

form.py

class ussignup(UserCreationForm):
  email=forms.EmailField(required=True)
  first_name=forms.CharField(required=False)
  last_name=forms.CharField(required=False)
  class Meta:
    model=User
    fields=('username','password1','password2','first_name','last_name','email',)
    #fields=('username','password','first_name','last_name','email')

  def save(self, commit=True):
        user = super(UserCreationForm, self).save(commit=False)
        user.email=self.cleaned_data["email"]
        user.first_name=self.cleaned_data["first_name"]
        user.last_name=self.cleaned_data["last_name"]
        if commit:
            user.save()
        return user
def signup(request):
    if request.method=='POST':
        form=ussignup(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/accounts/rgsuc')

    args={}
    args.update(csrf(request))
    args['form']=form
    return render_to_response('register.html',args)
 url(r'^accounts/signup',signup),
view.py

class ussignup(UserCreationForm):
  email=forms.EmailField(required=True)
  first_name=forms.CharField(required=False)
  last_name=forms.CharField(required=False)
  class Meta:
    model=User
    fields=('username','password1','password2','first_name','last_name','email',)
    #fields=('username','password','first_name','last_name','email')

  def save(self, commit=True):
        user = super(UserCreationForm, self).save(commit=False)
        user.email=self.cleaned_data["email"]
        user.first_name=self.cleaned_data["first_name"]
        user.last_name=self.cleaned_data["last_name"]
        if commit:
            user.save()
        return user
def signup(request):
    if request.method=='POST':
        form=ussignup(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/accounts/rgsuc')

    args={}
    args.update(csrf(request))
    args['form']=form
    return render_to_response('register.html',args)
 url(r'^accounts/signup',signup),
url.py

class ussignup(UserCreationForm):
  email=forms.EmailField(required=True)
  first_name=forms.CharField(required=False)
  last_name=forms.CharField(required=False)
  class Meta:
    model=User
    fields=('username','password1','password2','first_name','last_name','email',)
    #fields=('username','password','first_name','last_name','email')

  def save(self, commit=True):
        user = super(UserCreationForm, self).save(commit=False)
        user.email=self.cleaned_data["email"]
        user.first_name=self.cleaned_data["first_name"]
        user.last_name=self.cleaned_data["last_name"]
        if commit:
            user.save()
        return user
def signup(request):
    if request.method=='POST':
        form=ussignup(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/accounts/rgsuc')

    args={}
    args.update(csrf(request))
    args['form']=form
    return render_to_response('register.html',args)
 url(r'^accounts/signup',signup),
错误
输出显示表单,但字段中输入的密码未保存在数据库中。因此,当从管理员查看时,显示没有密码,因此无法登录。

好的,我终于得到了密码,我需要添加密码

user.set_password(self.cleaned_data["password1"])

我认为django本身会保存它,但是我已经重写了save函数,因此需要保存它,否则您只能在方法中更改它(即,您的类名
ussignup
,而不是基类
UserCreationForm
),它会起作用

def save(self, commit=True):
    user = super(ussignup, self).save(commit=False)
    user.email=self.cleaned_data["email"]
    user.first_name=self.cleaned_data["first_name"]
    user.last_name=self.cleaned_data["last_name"]
    if commit:
        user.save()
    return user
希望这会有所帮助