Django通用类视图实现忘记密码重置密码功能示例
前言
在Django中有大量的通用类视图,例如ListView,DetailView,CreateView,UpdateView等等,将所有重复的增删改查代码抽象成一个通用类,只需要配置极少量的代码即可实现功能。
使用通用类视图完成找回密码功能
首先引入
fromdjango.contrib.auth.viewsimportPasswordResetView,PasswordResetConfirmView,\ PasswordResetDoneView,PasswordChangeView,PasswordChangeDoneView,\ PasswordResetCompleteView
配置如下:
classMyPasswordResetView(PasswordResetView):
"""重置密码视图"""
template_name='users/registration/forget_pwd.html'
form_class=ForgetForm
success_url=reverse_lazy("users:password_reset_done")
email_template_name='users/registration/password_reset_email.html'
classMyPasswordResetConfirmView(PasswordResetConfirmView):
"""重置密码页面,输入两次密码"""
template_name='users/registration/password_change_form.html'
success_url=reverse_lazy('users:password_reset_complete')
classMyPasswordResetDoneView(PasswordResetDoneView):
"""发送确认重置邮件"""
template_name='users/registration/password_reset_done.html'
classMyPasswordResetCompleteView(PasswordResetCompleteView):
"""完成重置密码"""
template_name='users/registration/password_change_done.html'
其中忘记密码,填写邮箱的模板forget_pwd.html模板如下:
邮箱 {%ifform.errors%} 邮箱输入错误
其中输入新密码模板password_change_form.html页面如下:
{%csrf_token%} {{form|crispy}} 确认更改