对应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. 事务传播性、隔离性与MVCC

    一.事务传播性 1.1 什么是事务的传播性 事务的传播性一般在事务嵌套时候使用,比如在事务A里面调用了另外一个使用事务的方法,那么这俩个事务是各自作为独立的事务执行提交,还是内层的事务合并到外层的事务 ...

  2. 【新手指南】App原型设计:如何快速实现这6种交互效果?

    做App原型设计,那么页面切换.进度条.页面滚动.图片轮播,下拉菜单,搜索框这些交互效果必不可少.如何简单快速地实现这些效果呢?以下小编根据经验为大家提供了一些简单的设计方法,以供参考. 1.页面跳转 ...

  3. Max Sum -- hdu -- 1003

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=1003 Time Limit: 2000/1000 MS (Java/Others)    Memory ...

  4. Register A Callback To Handle SQLITE_BUSY Errors(译)

    http://www.sqlite.org/c3ref/busy_handler.html留着自己看的. Register A Callback To Handle SQLITE_BUSY Error ...

  5. [转]How do I run msbuild from the command line using Windows SDK 7.1?

    本文转自:http://stackoverflow.com/questions/6319274/how-do-i-run-msbuild-from-the-command-line-using-win ...

  6. linux下的文本操作之 文本查找——grep

    摘要:你有没有这样的应用场景:调试一个程序,出现debug的提示信息,现在你需要定位是哪个文件包含了这个debug信息,也就是说,你需要在一个目录下的多个文件(可能包含子目录)中查找某个字符串的位置: ...

  7. firedac odbc sql server driver连接占线导致另一个hstmt

    firedac odbc sql server driver连接占线导致另一个hstmt 原因:FDQuery.FetchOptions.Mode=fmOnDemand.好像是为了性能问题,不设置则默 ...

  8. LoadRunner监控SQLServer

    监控SQLSERVER时,能增加度量.但是只有系统资源相关的度量有数据,而和sqlserver相关的度量却没有数据. 解决方法: 改为在System Resource Graphs中通过添加Windo ...

  9. [Elixir004]通过环境变量(Environment Variables)来管理config

    在elixir的config中我们有时会使用的到一些不想暴露出来的配置项,常用的作法是如Phoenix #config/prod.exs use Mix.Config ... # Finally im ...

  10. h5页面宽度设置7.5rem

    function ready() { var u = navigator.userAgent; var winW = document.documentElement.clientWidth; if ...