AdminPasswordChangeForm
을 사용하여 비밀번호를 변경하는 것에 대해별로 생각하지 않습니다. 나는 자습서를 가지고이 조각 발견장고에서 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
및 템플릿 user_password_chage.html
괜찮이다. 템플릿 레벨에서 두 개의 비밀번호 필드가있는 폼을 보여줍니다 : 하나는 비밀번호이고 두 번째 비밀번호 (다시)입니다. 내가 다음과 같은 오류를 보여줍니다 암호 변경을 클릭 버튼을 제출 때 :
unbound method set_password() must be called with User instance as first argument (got unicode instance instead)
을 내가 장고에 초보자 오전 공식 문서에서이 양식에 대해 아무것도 발견되지 않았다.
답장을 보내 주셔서 감사합니다. ID를 전달하여 암호를 변경합니다. 그래서 나는 먼저 id와 연관되어있는 사용자 이름을 알아 내야하고 그런 다음 그 사용자 이름을 함수에 전달해야합니까? 이 ID 이외에 is_staff 옵션을 변경해야한다면 어떻게해야합니까? –
아니요, 사용자 이름이 아닌 사용자 인스턴스입니다. User.objects.get (pk = my_id)하면됩니다. –
성공적으로 실행되며 is_staff 옵션 변경은 어떻게됩니까? –