Django 사용자 암호 재설정

4423 단어
Django에 내장된 인증 보기를 사용하여 메일박스를 통해 비밀번호를 간단하게 리셋하는 기능 버전:django 1.11
django.contrib.auth.views에서 비밀번호 리셋을 위한 네 가지 종류의 보기를 제공합니다
class PasswordResetView URL name: password_reset   # 메일박스에 비밀번호 리셋 링크를 보내서 비밀번호를 리셋하는 것과 동일하게 유지해야 합니다.메일박스가 존재하지 않으면 메일을 보내지 않지만 오류 알림도 없을 수 있으니 주의하세요!
속성:
  • template_name: 암호 리셋 페이지의 템플릿 이름 (메일박스 페이지 입력) 을 지정합니다. 기본값은'registration/password 입니다.reset_form.html'
  • form_class: 메일박스를 검증하는 Form을 지정합니다. 기본값은 'Password ResetForm' 이며, '메일박스가 등록되지 않았습니다' 라는 알림을 실현하려면 이 Form의 clean () 방법을 다시 쓸 수 있습니다.
  • email_template_name: 메일 내용의 템플릿, 기본값은'registration/passwordreset_email.html'.
  • subject_template_name: 메일 테마의 템플릿, 기본'registration/passwordreset_subject.txt'.
  • success_url: 메일이 성공적으로 발송되었거나 메일박스가 등록되지 않았거나 다시 지정된 URL.
  • form_이메일: 메일을 보내는 주소입니다.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의 successurl 매개 변수를 호출합니다.주의: 메일박스가 등록되지 않으면 사용자의 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
    from .views import CustomPasswordResetView
    
    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/$', CustomPasswordResetView.as_view(), name='password_reset'),
        url(r'^password_reset/done/$', auth_views.PasswordResetDoneView.as_view(), name='password_reset_done'),    #              
        url(r'^reset/(?P[0-9A-Za-z_\-]+)/(?P[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

    좋은 웹페이지 즐겨찾기