Django 사용자 관리 ------- 비밀번호 수정
3185 단어 공부 해요.
하나.우선django가 자체로 가지고 있는 사용자 비밀번호를 수정합니다.
관련 원본이django에 저장되었습니다.contrib.auth의views에서.마찬가지로django가 자체로 가지고 있는login과logout 함수도 여기에 있습니다.그중에 정의된 패스워드change 메서드와 passwordchange_done 방법, 하나는 우리가 비밀번호를 수정하는 방법, 하나는 우리가 수정한 후에 처리하는 방법.
django가 우리에게 이미 적어 주었기 때문에,views에서 다시 설정할 필요가 없습니다.urls를 직접 정의합니다.다음과 같습니다.
from django.contrib.auth import views as auth_views
urlpatterns = [
url(r'password-change/$', auth_views.password_change, {
'template_name': "account/password_change_form.html",
'post_change_redirect': '/account/password-change-done'}, name='password_change'),
url(r'password-change-done/$', auth_views.password_change_done, {
'template_name': "account/password_change_done.html"}, name='password_change_done'),
]
왜냐하면 자체 패스워드가...change의 템플릿은registration/password 에 대응합니다change_form.html, 우리는settings에서templates 경로를 자신이 설정한 경로로 바꾸었다고 말했기 때문에 여기서 우리는 직접 자신이 쓴 템플릿을 매개 변수 형식으로 전송한다.원본 코드를 보면 우리가 점프 경로를 정하지 않으면password 로 자동으로 점프할 수 있습니다change_done, 하지만 우리가 쓴 패스워드change_done는 자신이 만든 사용자 관리 앱에 저장되어 있으며 경로 앞에 계정이 많아졌기 때문에 이 이동 경로를 직접 전달해야 합니다.
같은 이치,passwordchange_done도 마찬가지입니다. 단지 템플릿 인용 이름은password 입니다.change_done.html
둘.그 다음은 사용자 수정 함수를 스스로 설정하는 것이다
갓 배운 흰둥이는 앞의 표에서 암호의 입력 값을 직접 얻어서 데이터베이스에 저장된 값과 비교해서는 안 된다는 것을 주의해야 한다.데이터베이스 중의 암호는 알고리즘을 통해 암호화된 해시 값이고 밀문이기 때문에 직접 비교할 수 없다.django 공식 문서를 배우면django가 자체로 가지고 있는 암호에 대한 검증 함수를 알 수 있습니다.
django.contrib.auth.hashers 모듈은 산열 암호를 만들고 검증하는 함수를 제공합니다. 비교적 좋은 것은 User 모델에 독립해서 사용할 수 있습니다. 즉, 우리는 사용자 대상을 연결하지 않고 직접 가져와서 사용할 수 있습니다.다음과 같은 세 가지 함수가 있습니다.
check_password(password, encoded)
, check_password()。 : , password , , True, False。
make_password(password, salt=None, hasher='default')
。 : 。 , (PASSWORD_HASHERS ), 。 , 。 None, (check_password() )。
is_password_usable(encoded_password)
check_password() 。
여기서 체크password, 그리고makepassword, 잘 소개했어요.나는 나의 간단한 코드를 내려놓았다.def change_pwd(request):
if request.method == 'POST':
form = ChangepwdForm(request.POST)
if form.is_valid():
user = User.objects.get(username=request.POST.get('username'))
if user:
if check_password(request.POST.get('password'), user.password):
user.password = make_password(request.POST.get('new_password'))
user.save()
return ...
return ...
return ...
else:
return ...
form = ChangepwdForm()
return render(request, 'account/changepwd.html', {'form': form})
마지막으로 urls 설정 잊지 마세요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django 사용자 관리 ------- 비밀번호 수정Django에 내장된 응용 프로그램이 매우 많기 때문에 사용자 비밀번호를 수정할 때 우리는 자체적인 방법으로 수정할 수도 있고 해당하는 방법을 써서 수정할 수도 있다.여기에서 각각 두 가지 방법을 나열해 낸다. 하나...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.