对应github地址:密码重置
 
原理: 
1. 一个需要输入用户邮箱和注册码的密码忘记页面
2. 点击提交后,用户邮箱收到一个邮件,包含重置密码的链接
3. 点击链接进入密码重置页面
 
所以我们需要2个html页面实现重置功能
 
 
一. 忘记密码页面
 
把forgetpasssword.html拷贝到template目录
 
1. 在users/forms.py中定义ForgetForm
 
 
2. 在users/views.py中定义ForgetPwdView的get函数
 
 
3. users/urls.py中配置URL
 
 
4. 替换login.html中忘记密码的href地址为urls.py中定义的URL模式名称
 
 
5. 修改forgetpwd.html
1)修改css,js,图片等静态资源的地址
前端中加入{% load staticfiles %},然后修改css等地址如下
 
2)修改验证码图片,大概85行处
 
3)添加错误提示信息
 
为空时输入框标红
 
账号信息填写后提交错误时,信息回填,需要在账号的<input>标签中修改value值如下
 
 
 
6. 给ForgetPwdView添加POST方法
 
6.1. 在forgetpwd.html中修改<form>标签
大概80行处修改action地址为
添加{% csrf_token %}
 
6.2. 完善apps/utils/email_send.py中的密码忘记类型
 
 
 
 
 
二.  配置重置密码接口
 
先把重置密码页面password_reset.html放到templates目录
 
1. 因为password_reset.html中的<form>标签中有input输入框,因此我们需要编写form验证
users/forms.py中添加ModifyPwdForm
注意这里的passsword1,password2必须和password_reset.html中<form>标签中的name属性值一样
 
 
2. users/views中编写重置密码view的get函数
 
 
 
3. 修改password_reset.html中的<form>标签中添加一个隐藏的<input>标签,用来传递需要重置哪个用户的密码,因为是在未登录的状态下修改用户密码
修改<form>标签中的action,并添加{% csrf_token %}
(上面中的url模板会报错,后面修改)
 
 
4. 在users/urls.py中配置reset的URL
 
说明:
reset_pwd表示的这个URL模式有一个active_code的参数,而password_reset.html中把form表单的值传递给users:reset_pwd,后面并没有加active_code参数,按照URL匹配规则就会报错。
所以需要重新定义一个ModifyPwdView来处理password_reset.html中的post请求
 
 
5. 定义ModifyPwdView
 
 
6. users/urls.py中添加ModifyPwdView相应的URL
改写password_reset.html中<from>标签中的action地址为
 
 
7. 修改password_reset.html中<input>标签的type值为submit,否则提交不成功。原先为button
 
 
 

mxonline实战6 , 忘记用户密码时进行重置的更多相关文章

  1. 忘记root密码时如何重设密码

    哈哈,太久没用linux了,把自己的登陆密码给忘了.今天找了下方法如何重设密码以登陆系统. 此文仅以作备忘. 忘记linux密码时,可以使用单用户模式进入linux,修改root密码.1.在linux ...

  2. Mysql忘记用户密码的解决办法

    1.1 忘记用户密码的解决办法 普通用户,直接用root超级管理员登录进去修改密码就可以了,但是如果root密码丢失了,怎么办呢? 1.1.1 msyqld_saft方式找回密码 停止mysql:se ...

  3. oracle之修改/忘记用户密码

    一.修改/忘记用户密码: ## 修改oracle用户名和密码 sqlplus /nolog ## DBA角色进入 conn /as sysdba; ## 查看用户列表 select username ...

  4. Ubuntu 14.04 忘记用户密码(备忘)

    参考文章地址:www.linuxidc.com/Linux/2013-11/92236.htm 重启电脑 开机就会进入一个Grub引导页面,选择 "Ubuntu 高级选项"之后,按 ...

  5. mxonline实战4,用户登陆页面2和用户注册1

            一. 基于类来定义view.py diango中使用基于类来定义views的功能,其实更加方便,因为这样可继承一些定义好的基类,来减少我们的代码量   1. 使用基于类的方法,来重新定 ...

  6. Oracle使用——oracle 忘记用户密码登录

    背景 有时候我们忘记了oracle登录的用户密码,甚至是用户名称都不确定,应该怎么登陆呢 操作系统 CentOS7 Oracle12c 操作步骤 使用sqlplus登录系统:sqlplus  /  a ...

  7. mxonline实战15,用户中心:我的课程, 我的收藏,我的消息,登出和点击数以及收藏数

     对应github地址:第15天     一.  我的课程   1. 继承usercenter-base页面 2. 编写url, view

  8. mysql8忘记登录密码时,修改密码方法

    一.停止mysqld进程 systemctl stop mysqld.service 二.修改/etc/my.cnf(在mysqld选项添加skip-grant-tables),设置免密码登录: vi ...

  9. redhat7.3忘记root密码后如何重置root密码

    redhat7系如果忘记root密码,重置密码方法与redhat6系不同! 1.开机启动系统,在grub选择启动内核项时 按‘e’进入编辑模式 2.这时看到的参数并不全,要按上下键滚动显示, 3.在l ...

随机推荐

  1. Redis RDB文件

    [Redis RDB文件] 1.RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). RDB 的优点 RDB 是一个非常紧凑(compact)的 ...

  2. 去掉redhat linux提示注册

    去掉提示注册的话,卸载几个软件包:#rpm -qa | grep subscription-manager 然后移除那出现的几项吧:#yum remove subscription-manager-g ...

  3. A survey of best practices for RNA-seq data analysis RNA-seq数据分析指南

    A survey of best practices for RNA-seq data analysis RNA-seq数据分析指南 内容 前言 各位同学/老师,大家好,现在由我给大家讲讲我的文献阅读 ...

  4. [.NET] GC垃圾回收机制

    前言: 在.NET程序开发中,为了将开发人员从繁琐的内存管理中解脱出来,将更多的精力花费在业务逻辑上,CLR提供了自动执行垃圾回收的机制来进行内存管理.开发人员甚至感觉不到这一过程的存在.CLR执行垃 ...

  5. linux计划任务(一)

    一次性计划任务 at /etc/init.d/atd [root@localhost ~]# at : at> /bin/ls /etc |wc -l > /tmp/yimiao_demo ...

  6. Deep learning for visual understanding: A review

    https://www.sciencedirect.com/science/article/pii/S0924271618301291?dgcid=raven_sd_recommender_email ...

  7. python 3安装PDFMiner3K

    首先确保,你的pyhton是python 3 可在https://www.python.org/downloads/处下载 打开cmd,键入pip3 install pdfminer3k

  8. (博弈 sg入门)kiki's game -- hdu -- 2147

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=2147 题意: 在一个n*m的棋盘上,从  (1,m),即右上角开始向左下角走. 下棋者只能往左边(lef ...

  9. WebDriver高级应用——操作Web页面的滚动条

    目的: (1)滑动页面的滚动条到页面最下方 (2)滑动页面的滚动条到页面某个元素 (3)滑动页面的滚动条向下移动某个数量的像素 测试的网址: http://www.seleniumhq.org/ 代码 ...

  10. 23 DesignPatterns学习笔记:C++语言实现 --- 2.1 Bridge

    23 DesignPatterns学习笔记:C++语言实现 --- 2.1 Bridge 2016-07-22 (www.cnblogs.com/icmzn) 模式理解