Django 내 장 된 인증 보 기 를 이용 하여 사용자 암호 리 셋 기능 에 대한 상세 한 설명 을 실현 합 니 다.

머리말
비밀번호 리 셋 기능 은 모두 에 게 낯 설 지 않 을 것 이 라 고 믿 습 니 다.본 고 는 주로 Django 에 내 장 된 인증 보 기 를 사용 하여 간단 한 메 일 을 통 해 비밀 번 호 를 리 셋 하 는 기능 을 실현 하 는 것 에 대해 소개 하 였 습 니 다.참고 학습 을 제공 합 니 다.다음은 더 이상 말 하지 않 겠 습 니 다.상세 한 소 개 를 살 펴 보 겠 습 니 다.
django
실현 방법
django.contrib.auth.views 에서 비밀번호 초기 화 에 사용 할 네 가지 보 기 를 제공 합 니 다.
class PasswordResetView
URL name: password_reset  \#동일 하 게 유지
메 일 에 비밀 번 호 를 리 셋 하 는 링크 를 보 내 비밀 번 호 를 리 셋 합 니 다.메 일이 존재 하지 않 으 면 메 일 을 보 내지 않 지만 오류 알림 이 없 음 을 주의 하 세 요!
속성:
  • template_name:암호 페이지 를 리 셋 할 템 플 릿 이름(메 일 페이지 입력)을 지정 합 니 다.기본 값 은'registration/password'입 니 다.reset_form.html'
  • form_class:메 일 을 검증 할 Form 을 지정 합 니 다.기본 값 은'PasswordResetform'입 니 다.'메 일 미등 록'알림 을 실현 하려 면 이 Form 의 clean()방법 을 다시 쓸 수 있 습 니 다.
  • email_template_name:메 일 내용 의 템 플 릿,기본 값 은'registration/password'입 니 다.reset_email.html'.
  • subject_template_name:메 일 테마 템 플 릿,기본'registration/passwordreset_subject.txt'.
  • success_url:메 일 발송 성공(또는 메 일 등록 되 지 않 음)후 방향 을 바 꾸 는 URL.
  • form_email:메 일 을 보 낼 주소 입 니 다.기본 값 은 DEFAULT 사용FORM_EMAIL.settings.py 파일 에서 메 일 인자 설정 이 필요 합 니 다.
  • extra_context:템 플 릿 에 추 가 된 추가 컨 텍스트 데이터 가 필요 합 니 다.
  • PasswordResetView 에 대한 간단 한 맞 춤 형 제작:
    
    form django.contrib.auth.views import PasswordRestView
    from django.contrib.auth.forms import PasswordRestForm
    from django.contrib.auth.models import User
    from django import forms
    
    class CustomPasswordResetForm(PasswordRestForm):
     #  '     '   
     class clean_email(self):
     email = self.cleaned_date.get('email', '')
     if not User.objects.filter(email=email):
      raise forms.ValidationError('     ')
     return email
    
    class CustomPasswordResetView(PasswordRestView):
     template_name = 'your_passd_reset.html'
     form_class = CustomPasswordResetForm
    
    
    #urls.py
    from myapp import views
    
    urlpatterns = [
     #            ,  name      URL name  
     url(r'^password_reset/$', views.CustomPasswordResetView.as_view(), name='password_reset'),
    ]
    class PasswordResetDoneView
    URL name: password_reset_done
    메 일이 성공 적 으로 보 낸 페이지 를 표시 합 니 다.이 보 기 는 기본적으로 PasswordResetView 의 success 입 니 다.url 매개 변 수 를 호출 합 니 다.
    메모:메 일이 등록 되 지 않 으 면 사용자 의 isactive 가 False 이거 나 사용 할 수 없 는 비밀번호 가 있 으 면 이 페이지 로 다시 설정 하지만 메 일 을 보 내지 않 습 니 다!
    속성:
  • template_name:지정 한 템 플 릿 파일,기본'registration/passwordreset_done.html'
  • extra_context:추가 컨 텍스트 데이터 추가
  • class PasswordResetConfirmView
    URL name: password_reset_confirm
    새 암 호 를 입력 한 폼 이 있 는 페이지 를 표시 합 니 다.
    속성:
  • template_name:지정 한 템 플 릿 파일,기본'registration/passwordreset_confirm.html'
  • post_reset_login:하나의 불 값,비밀번호 리 셋 성공 후 자동 로그 인 여 부 를 지정 합 니 다.기본 값 은 False 입 니 다.
  • post_reset_login_backend:authentication 을 다시 썼 을 때backend,그리고 post 설정reset_login 은 True 입 니 다.사용 할 authentication 을 지정 해 야 합 니 다.backend
  • form_class:암 호 를 검증 하 는 Form,기본 값 은 SetPasswordForm 입 니 다.
  • success_url:비밀번호 리 셋 후 리 셋 된 url,기본'passwordreset_complete'.
  • extra_context:추가 컨 텍스트
  • class PasswordResetCompleteView
    URL name:password_reset_complete
    사용자 에 게 비밀번호 가 리 셋 되 었 음 을 알 리 는 보 기 를 표시 합 니 다.
    속성:
  • template_name:지정 한 템 플 릿 파일,기본'registration/passwordreset_complete.html'
  • extra_context:추가 컨 텍스트
  • 다음 세 보기 의 재 작성 방법 은 PasswordResetView 와 같 습 니 다.
    기본 제공 기능 과 템 플 릿 을 완전히 사용 하면 urls.py 파일 에 직접 도입 할 수 있 습 니 다.
    
    from django.conf.urls import url, include
    from django.contrib.auth import views as auth_views
    
    urlpatterns = [
     url(r'^login/$', auth_views.LoginView.as_view(), name='login'),
     url(r'^logout/$', auth_views.logout_then_login, name='logout'), #           
     url(r'^password_reset/$', auth_views.PasswordResetView.as_view(form_class=forms.CustomPasswordResetForm), name='password_reset'), #      
     url(r'^password_reset/done/$', auth_views.PasswordResetDoneView.as_view(), name='password_reset_done'), #              
     url(r'^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', auth_views.PasswordResetConfirmView.as_view(), name='password_reset_confirm'), #               
     url(r'^reset/done/$', auth_views.PasswordResetCompleteView.as_view(), name='password_reset_complete'), #            
    ]
    참고:https://docs.djangoproject.com/en/1.11/topics/auth/default/#module-django.contrib.auth.views
    총결산
    이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

    좋은 웹페이지 즐겨찾기