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}} 确认更改