Django通用类视图实现忘记密码重置密码功能示例
作者:Pykk2019 发布时间:2022-12-04 13:06:06
标签:Django,忘记密码,重置密码
前言
在Django中有大量的通用类视图,例如ListView,DetailView,CreateView,UpdateView等等,将所有重复的增删改查代码抽象成一个通用类,只需要配置极少量的代码即可实现功能。
使用通用类视图完成找回密码功能
首先引入
from django.contrib.auth.views import PasswordResetView, PasswordResetConfirmView, \
PasswordResetDoneView, PasswordChangeView, PasswordChangeDoneView, \
PasswordResetCompleteView
配置如下:
class MyPasswordResetView(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'
class MyPasswordResetConfirmView(PasswordResetConfirmView):
"""重置密码页面,输入两次密码"""
template_name = 'users/registration/password_change_form.html'
success_url = reverse_lazy('users:password_reset_complete')
class MyPasswordResetDoneView(PasswordResetDoneView):
"""发送确认重置邮件"""
template_name = 'users/registration/password_reset_done.html'
class MyPasswordResetCompleteView(PasswordResetCompleteView):
"""完成重置密码"""
template_name = 'users/registration/password_change_done.html'
其中忘记密码,填写邮箱的模板forget_pwd.html模板如下:
<form method="post" class="form-validate" action="{% url 'users:password_reset' %}">
<div class="form-group">
<input id="login-username" type="text" name="email" required data-msg="请输入您的邮箱" class="input-material">
<label for="login-username" class="label-material">邮箱</label>
{% if form.errors %}
<div style="color: red">邮箱输入错误</div>
{% endif %}
</div>
{% csrf_token %}
<button type="submit" id="login" href="#" rel="external nofollow" class="btn btn-primary">发送确认邮件</button>
<!-- This should be submit button but I replaced it with <a> for demo purposes-->
</form>
其中输入新密码模板password_change_form.html页面如下:
<form id="form" method="post">
{% csrf_token %}
{{ form|crispy }}
<div class="form-group">
<button type="submit" class="btn btn-primary button-submit">确认更改</button>
</div>
</form>
其中重置密码邮件发送成功的模板password_reset_done.html如下:
<div class="col-lg-6 bg-white">
<div class="form d-flex align-items-center">
<div class="content">
<h1>重置密码邮件发送成功!</h1>
</div>
</div>
</div>
其中密码重置成功password_change_done.html如下:
<div class="container">
<div class="row">
<div class="col-md-6 offset-md-3">
<h1>重置密码成功!</h1>
<a href="{% url 'index' %}" rel="external nofollow" >回到首页</a>
</div>
</div>
</div>
最后配置路由
path('password/reset/', view=MyPasswordResetView.as_view(), name='password_reset'), # password_reset
path('password/reset/done/', MyPasswordResetDoneView.as_view(), name='password_reset_done'), # 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})/$',
view=MyPasswordResetConfirmView.as_view(), name='password_reset_confirm'), # reset
path('reset/done/', MyPasswordResetCompleteView.as_view(), name='password_reset_complete'),
效果如下:
来源:https://www.cnblogs.com/PyKK2019/p/11938799.html


猜你喜欢
- 第一步:在handleTarget函数方法开始加入:var theTarget = e.target; if (theTarget != n
- 本文实例讲述了Python 静态方法和类方法。分享给大家供大家参考,具体如下:1. 类属性、实例属性它们在定义和使用中有所区别,而最本质的区
- list*n生成多维数组与for循环生成多维数组的区别本文主要介绍生成二维数组的方法,同时解释使用list * n 方式所存在的问题。1.从
- 作为一个网页设计师,不知道各位是否有这样的经历:客户给你的网站材料很多都是Word文档,虽然阅读起来很
- IP合法性校验是开发中非常常用的,看起来很简单的判断,作用确很大,写起来比较容易出错,今天我们来总结一下,看一下3种常用的IP地址合法性校验
- 本文实例为大家分享了Vue+Websocket简单实现聊天功能的具体代码,供大家参考,具体内容如下效果图:聊天室此篇文章是针对Websock
- 所使用python环境为最新的3.6版本Python中几种对文件的操作方法:将A文件复制到B文件中去(保持原来格式)读取文件中的内容,返回L
- 打开CMD命令 执行:sqlcmd/? 这是sqlcmd命令的一些帮助信息 通过上面可以知道怎么连数据库了 执行:sqlcmd -S 服务器
- AERGO SHIP:用于开发智能合约的包管理器用于构建、测试和部署分布式应用程序的客户端框架和开发环境构建大型分布式应用程序是很困难的,因
- resample()resample()进行重采样。重采样(Resampling)指的是把时间序列的频度变为另一个频度的过程。把高频度的数据
- 在项目开发的过程中,经常会遇到要查看图像细节的问题,这时候我们通常会,滚动滑轮将图像放大,或者使用电脑内置的放大器功能进行查看,如下图所示,
- 1、ALL OR ANYPython 之所以成为这么一门受欢迎的语言一个原因是它的可读性和表达能力非常强。Python 也因此经常被调侃为&
- 最近的业务中涉及到这样一个需求,在线培训的系统需要知道用户对某个在线预览的页面追踪用户的预览时长。初步我们首先想到借助 Vue 页面的生命周
- 1、引言小 * 丝:鱼哥,这个周末过得咋样小鱼:酸爽~ ~小 * 丝:额~~ 我能想到的,是这样吗?小鱼:有多远你走多远。小 * 丝:唉,鱼哥,你别说,
- 一、配置抓包工具1.安装软件本文选择的抓包工具:Fiddler 具体的下载安装这里不详细赘述!(网上搜Fiddler安
- tensorboard常用于更直观的观察数据在神经网络中的变化,或者用于观测已经构建完成的神经网络的结构。其有助于我们更加方便的去观测ten
- 约定:import pandas as pdimport numpy as npReIndex重新索引reindex()是pandas对象的
- 抱着“取之于众 服务于众”的思想,我总结了一下,把它拿到网上来与大家分享,希望能帮助遇到类似问题的朋友。 我主要使用了IE内置的WebBro
- 一、什么是数据库事务数据库事务( transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执
- 论坛经常有人会问到用CSS如何美化Select标签,其实但凡你看到很酷的都是用javascript来实现的。昨天试着做了一下,基本实现的初级