对应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. fabric本地一键部署LAMP

    一.添加普通用户jeff执行sudo时无需输入密码 $ sudo vim /etc/sudoers ---------------------------------------> ## All ...

  2. R学习笔记-安装R和RStudio,注意RStudio的版本需要与操作系统版本匹配

    1.安装步骤:先安装R,再安装RStudio RStudio是R的集成开发工具,本身不带R环境. 2.从当前R的官网和RStudio下载的R和RStudio的版本分别为: A .For Windows ...

  3. 随机分布 + action 计数

    For random samples from , use:  注意平方: sigma * np.random.randn(...) + mu 2.5*2.5 = 6.25 Two-by-four a ...

  4. webform版部分视图与请求拦截

    .主控前台页面 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebFor ...

  5. BFS入门

    #include<iostream> #include<cstring> #include<queue> using namespace std; #define ...

  6. ADO.net开放式并发

    https://docs.microsoft.com/zh-cn/dotnet/framework/data/adonet/optimistic-concurrency 在多用户环境中,有两种用于更新 ...

  7. Oracle EBS R12多组织访问架构

    关于R12的新特性Multi-Org Access Control(MOAC).Oracle宣传的好处主要有:1.enable users to access to secured data in o ...

  8. java性能分析工具 jconsole.exe

    通过 Java visualMv结合 jconsole.exe   工具即可查看如图所示(Jconsole在JDK文件夹内,非JRE文件夹) 在Java Visualvm工具里面安装JTA插件,分析线 ...

  9. docker 版本变化及说明

    Docker从1.13.x版本开始,版本分为企业版EE和社区版CE,版本号也改为按照时间线来发布,比如17.03就是2017年3月,有点类似于ubuntu的版本发布方式. 企业版自然会提供一些额外的服 ...

  10. jenkins启动失败,提示Starting Jenkins Jenkins requires Java8 or later, but you are running 1.7.0

    # 背景 centos安装jenkins后,先启动jenkins服务,结果报错如下: 但自己明明已经安装了java8的 # 解决方法 既然安装了java8的话,那么证明是jenkins启动的是还是用的 ...