本文使用qq邮箱,需要登录邮箱,在设置-账户里面开启SMTP服务,要记下授权码

前端html

{#找回密码的表单#}

<form action="" method="post" id="login">
{% csrf_token %}
<input type="text" class="name" name="member_name" Placeholder="Username" required=""/>
<input type="text" class="email" name="member_email" Placeholder="email" required=""/> <div class="login-agileits-bottom">
<h6><a href="javascript:;" type="button" id="onsubmit">提交</a></h6>
</div>
</form> {#找回密码的表单结束#}

前端js

{#  找回密码的jquery  #}
$(document).ready(function () {
$('#onsubmit').click(function () {
$.post('/blog/findpwd/', $('#login').serialize(), function (data) {
if (data['status'] == 0) {
layer.msg(data.info,{
time:2000
});
{#location.href = "/blog/login/";#}
} else {
layer.msg(data['info'])
}
}, 'json')
})
});
{# 找回密码的jquery结束 #}

路由

# 找回密码
re_path('findpwd/', login.findpwd,name='findpwd'),

方法

def findpwd(request):
from django.core.mail import send_mail
from mysite7 import settings
import threading
from blog.utils import function # 引入自定义的验证码
if request.method == 'POST':
res = {'status': None, 'info': None}
member_name = request.POST.get('member_name')
member_email = request.POST.get('member_email')
member_obj = Member.objects.filter(member_name=member_name, member_email=member_email).first() if member_obj:
# 随机生成新密码
num = function.range_num(6)
new_pwd = Member.objects.filter(member_name=member_name).update(member_pwd=make_password(num))
if new_pwd:
res['status'] = 0
res['info'] = '邮件已发送,注意查收'
t = threading.Thread(target=send_mail, args=(
'%s在找回密码' % member_name,
'您的密码已经被重置,新密码为%s' % num,
settings.EMAIL_HOST_USER,
['%s' % member_obj.member_email]
))
t.start()
else:
res['status'] = 1
res['info'] = '密码找回失败'
return HttpResponse(json.dumps(res))
else:
res['status'] = 3
res['info'] = '用户/邮箱不存在'
return HttpResponse(json.dumps(res))
return render(request, 'blog/findPwd.html')

项目目录下创建untils文件夹,文件夹下创建function.py文件,封装生成的随机密码

# 随机数
def range_num(num):
# 定义一个种子,从这里面随机拿出一个值,可以是字母
seeds = ""
# 定义一个空列表,每次循环,将拿到的值,加入列表
random_num = []
# choice函数:每次从seeds拿一个值,加入列表
for i in range(num):
random_num.append(random.choice(seeds))
# 将列表里的值,变成四位字符串
return "" . join(random_num)#

settings.py文件中设置

EMAIL_HOST='smtp.qq.com'
EMAIL_PORT=465
EMAIL_HOST_USER='3028981710@qq.com'#账号
EMAIL_HOST_PASSWORD='kimtvyyymbwodgaf'#密码(授权码)
EMAIL_USE_SSL=True

页面效果

done。

django项目中使用邮箱找回密码功能的更多相关文章

  1. spring mvc下实现通过邮箱找回密码功能

    1功能分析 通过spring mvc框架实现通过邮箱找回密码. 2 实现分析 主要是借助某个邮箱的pop3/smtp服务实现的邮件代发功能. 3 源码分析 3.1首先在用户表对应的javabean中加 ...

  2. php邮箱找回密码功能

    原理很简单: 用户找回密码的时候,填写用户名,程序得到用户名便可以去数据库取出用户对应的密码以及当时填写的邮箱, 根据用户名和密码生成一个key=md5(username+password),然后$s ...

  3. javaWeb实现使用邮箱邮件找回密码功能

    JSP+Jmail+JavaBean 发邮件(转)2010-08-23 18:052007年04月14日 14:32/* * SendMail.java * * Created on 2007年3月3 ...

  4. AspNetCore-MVC实战系列(二)之通过绑定邮箱找回密码

    AspNetCore - MVC实战系列目录 . 爱留图网站诞生 . AspNetCore - MVC实战系列(一)之Sqlserver表映射实体模型 . AspNetCore-MVC实战系列(二)之 ...

  5. 【技术博客】JWT的认证机制Django项目中应用

    开发组在开发过程中,都不可避免地遇到了一些困难或问题,但都最终想出办法克服了.我们认为这样的经验是有必要记录下来的,因此就有了[技术博客]. JWT的认证机制Django项目中应用 这篇技术博客基于软 ...

  6. PHP会员找回密码功能实现实例介绍

    设置思路 1.用户注册时需要提供一个E-MAIL邮箱,目的就是用该邮箱找回密码. 2.当用户忘记密码或用户名时,点击登录页面的“找回密码”超链接,打开表单,并输入注册用的E-MAIL邮箱,提交. 3. ...

  7. django项目基于钩子验证的注册功能

    前端html <div class="agile-row"> <h3>注册</h3> {# 注册的开始#} <div class=&quo ...

  8. PHP会员找回密码功能的简单实现

    文章来自:博客 http://www.jb51.net/article/91944.htm 设置思路 1.用户注册时需要提供一个E-MAIL邮箱,目的就是用该邮箱找回密码. 2.当用户忘记密码或用户名 ...

  9. Java实现邮箱找回密码 --转载

    通过邮件找回密码功能的实现 1.最近开发一个系统,有个需求就是,忘记密码后通过邮箱找回.现在的系统在注册的时候都会强制输入邮箱,其一目的就是 通过邮件绑定找回,可以进行密码找回.通过java发送邮件的 ...

随机推荐

  1. udev只能修改Linux 网口名称,无法修改/dev目录下的设备名称

    NAME The name to use for a network interface. The name of a device node cannot be changed by udev, o ...

  2. 全球 IPv4 地址正式耗尽

    重要消息: 就在 2019/11/25 UTC+1 15:35 时,一封来自欧洲 RIPE NCC 的邮件中得到确认:全球的IPv4地址已经彻底耗尽. IPv4 大家应该很熟悉了,就是我们平常所知道的 ...

  3. HttpClient爬取网站及图片

    1.什么是HttpClient? HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 ...

  4. Gamma阶段第十次scrum meeting

    每日任务内容 队员 昨日完成任务 明日要完成的任务 张圆宁 #91 用户体验与优化https://github.com/rRetr0Git/rateMyCourse/issues/91(持续完成) # ...

  5. linux quota磁盘限额,引发的rename系统调用 errno:18 - Invalid cross-device link

    起因: log4j日志滚动失败,debug发现jvm调用native方法rename失败,也就是系统调用rename失败. 自己写c程序系统调用rename,证实确实是这个问题. 日志打在容器里,日志 ...

  6. flink安装启动(docker)

    参考https://hub.docker.com/_/flink/ 相关端口The Web Client is on port 8081JobManager RPC port 6123TaskMana ...

  7. ASP.NET 网站迁移 HTTP 错误 500.22 - Internal Server Error 检测到在集成的托管管道模式下不适用

    前提:今天要做网站迁移,把A服务器上的网站迁移到B服务器上,A服务器当时的环境是.NET 4.0 ,而B服务器是.NET2.0,A服务器IIS为6.0,B服务器IIS版本为7.0  第一步,先在B服务 ...

  8. Sitecore客户体验成熟度模型之旅

    “成熟”这个词带来了很多想法:你在青年时不愿意找到工作?你四岁的孩子偶尔发脾气?可能还有你的公司能否在数字化时代提供个性化的客户体验? 你如何定义CX成熟度?如果您的CX战略仍处于开发阶段,您需要达到 ...

  9. nginx location指令详解

    Nginx的HTTP配置主要包括三个区块,结构如下: http { //这个是协议级别 include mime.types; default_type application/octet-strea ...

  10. FusionInsight大数据开发---Hive应用开发

    Hive应用开发 了解Hive的基本架构原理 掌握JDBC客户端开发流程 了解ODBC客户端的开发流程 了解python客户端的开发流程 了解Hcatalog/webHcat开发接口 掌握Hive开发 ...