django项目中使用邮箱找回密码功能
本文使用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项目中使用邮箱找回密码功能的更多相关文章
- spring mvc下实现通过邮箱找回密码功能
1功能分析 通过spring mvc框架实现通过邮箱找回密码. 2 实现分析 主要是借助某个邮箱的pop3/smtp服务实现的邮件代发功能. 3 源码分析 3.1首先在用户表对应的javabean中加 ...
- php邮箱找回密码功能
原理很简单: 用户找回密码的时候,填写用户名,程序得到用户名便可以去数据库取出用户对应的密码以及当时填写的邮箱, 根据用户名和密码生成一个key=md5(username+password),然后$s ...
- javaWeb实现使用邮箱邮件找回密码功能
JSP+Jmail+JavaBean 发邮件(转)2010-08-23 18:052007年04月14日 14:32/* * SendMail.java * * Created on 2007年3月3 ...
- AspNetCore-MVC实战系列(二)之通过绑定邮箱找回密码
AspNetCore - MVC实战系列目录 . 爱留图网站诞生 . AspNetCore - MVC实战系列(一)之Sqlserver表映射实体模型 . AspNetCore-MVC实战系列(二)之 ...
- 【技术博客】JWT的认证机制Django项目中应用
开发组在开发过程中,都不可避免地遇到了一些困难或问题,但都最终想出办法克服了.我们认为这样的经验是有必要记录下来的,因此就有了[技术博客]. JWT的认证机制Django项目中应用 这篇技术博客基于软 ...
- PHP会员找回密码功能实现实例介绍
设置思路 1.用户注册时需要提供一个E-MAIL邮箱,目的就是用该邮箱找回密码. 2.当用户忘记密码或用户名时,点击登录页面的“找回密码”超链接,打开表单,并输入注册用的E-MAIL邮箱,提交. 3. ...
- django项目基于钩子验证的注册功能
前端html <div class="agile-row"> <h3>注册</h3> {# 注册的开始#} <div class=&quo ...
- PHP会员找回密码功能的简单实现
文章来自:博客 http://www.jb51.net/article/91944.htm 设置思路 1.用户注册时需要提供一个E-MAIL邮箱,目的就是用该邮箱找回密码. 2.当用户忘记密码或用户名 ...
- Java实现邮箱找回密码 --转载
通过邮件找回密码功能的实现 1.最近开发一个系统,有个需求就是,忘记密码后通过邮箱找回.现在的系统在注册的时候都会强制输入邮箱,其一目的就是 通过邮件绑定找回,可以进行密码找回.通过java发送邮件的 ...
随机推荐
- Centos开发小计
1. 生成静态库,linux下库的规则是lib开头 g++ -c code.cpp ar cr libcode.a code.o
- Java集合详解1:一文读懂ArrayList,Vector与Stack使用方法和实现原理
本文非常详尽地介绍了Java中的三个集合类 ArrayList,Vector与Stack <Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整 ...
- AI保存文件出现了未知错误 (Adobe Illustrator)
可能的原因如下:1 把文件中所有的文字全选,转成曲线,把所有的文字都创建成轮廓2 新建一个页面,把制作的复制到新页面里3 需要把图层全部解锁再保存4 没有权限,设置一下即可5 PRINT SPOOLE ...
- Hive常见错误
1.root is not allowed to impersonate root 修改etc/hadoop/core-site.xml,增加如下配置: <property> <na ...
- LinkedHashMap源码
TreeMap是一颗红黑树做Map.HashMap是数组+链表+红黑树.HashTable是数组+链表. LinkedHashMap底层存储结构与HashMap一样,不同的是LinkedHashMap ...
- 大一0基础小白用最基础C写哥德巴赫猜想
#include <stdio.h>int main (){ int a,b,c,k,count1,count2; for(a=4;a<=1200;a=a+2){ for(b=2;b ...
- SQL Server 中获取一个表的字段信息
直接贴代码了: SELECT sysobjects.name AS TableName, syscolumns.Id AS TableId, syscolumns.name AS DbColumnNa ...
- C#写入Excel文件方式
由于在工作中经常要把数据库的统计数据导入Excel文件,进行IO磁盘操作,所以在这里记录下. 首先创建默认文件夹,并返回文件夹路径. private static string CPath(strin ...
- 一次golang应用的docker部署经历
开发平台win10,服务器centos7.5 编写dockerfile # scratch 为空镜像,因为golang的build的可执行文件不需要什么环境 FROM scratch # 作者署名 M ...
- [Leetcode] Binary Tree Pruning
題目是說,如果左右子樹都不存在又自已為0,就去掉那個子樹(設為null) recursive後序,左子樹,右子樹,然後是根 自已同時又是別人的子樹,所以要告訢根自已是不是存在 從a開始,左右子樹都不存 ...