对应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. Python编程快速上手(七)Unsplash批量下载器

    首发于个人博客:http://rhinoc.top/post/python_7.html 程序描述 V1.0输入关键字搜索图片,模拟页面下拉获取更多图片,页面加载完成后获取图片链接并下载至指定文件夹. ...

  2. ios 解决Wkwebview闪烁问题

    // 网页闪烁问题    if ([self.webView.realWebView isKindOfClass:[WKWebView class]]) {         ((WKWebView * ...

  3. 集群监控之 —— ipmi操作指南

    http://blog.csdn.net/yunsongice/article/details/5408802 智能平台管理界面(IPMI,Intelligent Platform Managemen ...

  4. python socket编程入门(编写server实例)-乾颐堂

    python 编写server的步骤: 1. 第一步是创建socket对象.调用socket构造函数.如: socket = socket.socket( family, type ) family参 ...

  5. 静态HTML服务器

    主要代码 #pragma once#include "pre.h"#include <thread> NAMESPACE(DEF) class Socket {publ ...

  6. Spring MVC的handlermapping之请求分发如何找到正确的Handler(RequestMappingHandlerMapping)

    这个思路同样是通过在AbstractHandlerMethodMapping里面来实现getHandlerInternal()实现自己的方法来处理寻找正确的处理器,不懂得请看上一篇. protecte ...

  7. SpringBoot2.0WebFlux响应式编程知识总结

  8. Android Gson 操作

    JSON序列化后的数据不带类名与名命空间,所以这两个服务端跟客户端可以不对应,需要保证字段对应即可 Asp.net MVC端 using System; using System.Collection ...

  9. 使用js/jquery查找iframe中的

    原生js  一.在iframe的父窗口中获取iframe中的元素: js代码 格式: window.frames["iframe的name值"].document.getEleme ...

  10. LightOJ 1428 Melody Comparison (KMP + 后缀数组)

    题意:给定两个串A,B,问你A有多少不同的子串,并且不包含B. 析:首先A有多少个不同的子串,可以用后缀数组来解决,也就是 n - sa[i] - h[i] + 1.但是要是不包含B,可以先预处理A和 ...