Django通用类视图实现忘记密码重置密码功能示例


Posted in Python onDecember 17, 2019

前言

在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'),

效果如下:

Django通用类视图实现忘记密码重置密码功能示例

Django通用类视图实现忘记密码重置密码功能示例

以上这篇Django通用类视图实现忘记密码重置密码功能示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中管道用法入门实例
Jun 04 Python
python修改字典内key对应值的方法
Jul 11 Python
python中zip()方法应用实例分析
Apr 16 Python
Python 2.x如何设置命令执行的超时时间实例
Oct 19 Python
python如何把嵌套列表转变成普通列表
Mar 20 Python
python实现在cmd窗口显示彩色文字
Jun 24 Python
pytorch实现focal loss的两种方式小结
Jan 02 Python
python实现简单飞行棋
Feb 06 Python
利用python实现逐步回归
Feb 24 Python
Python中flatten( ),matrix.A用法说明
Jul 05 Python
解决TensorFlow调用Keras库函数存在的问题
Jul 06 Python
Python 如何实现访问者模式
Jul 28 Python
Django集成celery发送异步邮件实例
Dec 17 #Python
python学生信息管理系统实现代码
Dec 17 #Python
pymysql模块的操作实例
Dec 17 #Python
Django异步任务线程池实现原理
Dec 17 #Python
python 求10个数的平均数实例
Dec 16 #Python
python 经典数字滤波实例
Dec 16 #Python
Python实现把类当做字典来访问
Dec 16 #Python
You might like
《五等分的花嫁》漫画完结!2020年10月第2期TV动画制作组换血!
2020/03/06 日漫
php页面缓存方法小结
2015/01/10 PHP
PHP中余数、取余的妙用
2015/06/29 PHP
php微信开发之自定义菜单实现
2016/11/18 PHP
CI(CodeIgniter)框架视图中加载视图的方法
2017/03/24 PHP
PHP PDOStatement::getColumnMeta讲解
2019/02/01 PHP
PHP回调函数简单用法示例
2019/05/08 PHP
javascript 去字符串空格终极版(支持utf8)
2009/11/14 Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
2014/07/27 Javascript
js与jQuery实现checkbox复选框全选/全不选的方法
2016/01/05 Javascript
浅谈jQuery hover(over, out)事件函数
2016/12/03 Javascript
详解vue-cli与webpack结合如何处理静态资源
2017/09/19 Javascript
jQueryMobile之窗体长内容的缺陷与解决方法实例分析
2017/09/20 jQuery
vue+vue-router转场动画的实例代码
2018/09/01 Javascript
5分钟快速看懂ES6中的反射与代理
2019/12/19 Javascript
JS实现滑动插件
2020/01/15 Javascript
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
2020/04/28 Javascript
ES6函数实现排它两种写法解析
2020/05/13 Javascript
在vue中对数组值变化的监听与重新响应渲染操作
2020/07/17 Javascript
js里面的变量范围分享
2020/07/18 Javascript
vue3.0 加载json的方法(非ajax)
2020/10/26 Javascript
Python实现在Linux系统下更改当前进程运行用户
2015/02/04 Python
Flask框架使用DBUtils模块连接数据库操作示例
2018/07/20 Python
对python中类的继承与方法重写介绍
2019/01/20 Python
Python字典常见操作实例小结【定义、添加、删除、遍历】
2019/10/25 Python
matlab中二维插值函数interp2的使用详解
2020/04/22 Python
基于PyQT实现区分左键双击和单击
2020/05/19 Python
Python代码注释规范代码实例解析
2020/08/14 Python
多个版本的python共存时使用pip的正确做法
2020/10/26 Python
详解HTML5 Canvas标签及基本使用
2020/01/10 HTML / CSS
Agoda台湾官网:国内外订房2折起
2018/03/20 全球购物
学前教育教师求职自荐信
2013/09/22 职场文书
电信专业毕业生推荐信
2013/11/18 职场文书
职工培训工作总结
2015/08/10 职场文书
2019年干货:自我鉴定
2019/03/25 职场文书
MySQL 分页查询的优化技巧
2021/05/12 MySQL