0

我对使用更改密码没有太多想法AdminPasswordChangeForm。我得到了一个教程,发现了这个片段:

def user_change_password(request, id):
    form = AdminPasswordChangeForm(User, request.POST)
    if form.is_valid():
        new_user = form.save()
        msg = _('Password changed successfully.')
        request.user.message_set.create(message=msg)
        return HttpResponseRedirect('..')
    else:
        form = AdminPasswordChangeForm(User)
        extra_context = {    
            'form': form,
            'change': True
        }
        return direct_to_template(request,"users/user_password_change.html",
            extra_context = extra_context)

url.py和 template一切都很好user_password_chage.html。在模板级别,它显示了一个包含两个密码字段的表单:一个是密码,第二个是密码(再次)。但是当我单击提交按钮更改密码时,它显示以下错误:

必须使用 User 实例作为第一个参数调用未绑定的方法 set_password()(改为获取 unicode 实例)

我是 Django 的新手,在官方文档中没有找到任何有关此表单的信息。

4

1 回答 1

2

表单实例化调用的第一个参数应该是用户实例,而不是 User 类 - 即它应该是您要更改其密码的实际用户。大概那是当前用户,因此您可以从以下位置获取request.user

form = AdminPasswordChangeForm(request.user, request.POST)
于 2012-05-12T21:23:21.550 回答