python-Web-django-邮箱登陆
setting:
# 发送邮箱
EMAIL_HOST = 'smtp.163.com'
EMAIL_PORT = 465
EMAIL_HOST_USER = '666666@163.com' #EMAIL_HOST_PASSWORD = '666666'
EMAIL_HOST_PASSWORD = ''
EMAIL_USE_SSL = True
until:
import random
def range_num(num):
# 定义一个种子,从这里面随机拿出一个值,可以是字母
seeds = ""
# 定义一个空列表,每次循环,将拿到的值,加入列表
random_num = []
# choice函数:每次从seeds拿一个值,加入列表
for i in range(num):
random_num.append(random.choice(seeds))
# 将列表里的值,变成四位字符串
return "" . join(random_num)
views:
from django.shortcuts import render,HttpResponse,redirect
from app01.models import *
from django.core.mail import send_mail
from my_pro import settings
import threading
import json
from app01.utils.function import range_num def getpwd(request):
'''忘记密码'''
res = {'s':None,'info':None}
if request.method == 'POST':
''''''
try:
username = request.POST.get('username')
email = request.POST.get('email')
member_obj = Member.objects.filter(member_name=username,member_email=email).first()
if member_obj:
'''发送邮件'''
code = range_num(4)
request.session['email_code'] = code
liuyan = '用户{}获得密钥{}!如果非本人操作!请及时联系本站!'.format(username,code)
tuple1 = ('邮箱密码查找信息:',
liuyan,
settings.EMAIL_HOST_USER,
['666666@qq.com',])
t = threading.Thread(target=send_mail,args=tuple1)
t.start()
print(liuyan)
# send_mail('邮箱密码查找信息:',
# liuyan,
# settings.EMAIL_HOST_USER,
# ['666666@qq.com'])
print(111)
res['s'] = 1
res['info'] = '邮箱发送成功!'
return HttpResponse(json.dumps(res))
else:
res['s'] = 0
res['info'] = '邮箱发送失败!'
return HttpResponse(json.dumps(res))
except EOFError as e:
print(e)
res['s'] = 0
res['info'] = '输入错误'
return HttpResponse(json.dumps(res)) return render(request,'app01_get_pwd.html') def repwd(request):
'''更新密码'''
res = {'s': None, 'info': None}
if request.method == 'POST':
''''''
try:
username = request.POST.get('username')
email = request.POST.get('email')
pwd = request.POST.get('pwd')
repwd = request.POST.get('repwd')
if pwd == repwd:
Member.objects.filter(member_name=username,member_email=email).first().update(member_pwd=pwd)
res['s'] = 1
res['info'] = '更新密码成功!'
del request.session['email_code']
else:
res['s'] = 0
res['info'] = '密码错误!'
except:
res['s'] = 0
res['info'] = '输入错误1'
return HttpResponse(json.dumps(res))
html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>忘记密码</title>
</head>
<body>
<a href="{% url 'app01:index' %}">首页</a>
<a href="{% url 'app01:login' %}">登陆页面</a>
<form action="#">
{% csrf_token %}
账号:<input type="text" name="username"><br>
邮箱:<input type="text" name="email">
<input type="button" value="发送邮件" id="sendemail"><br>
<div class="maina">
</div> </form> </body>
</html>
<script src="/static/js/jquery.min.js"></script>
<script src="/static/layer/layer.js"></script>
<script> $(document).on('click','#sendemail',function () {
$.post('{% url 'app01:getpwd' %}', $('form').serialize(), function (data) { if (data['s'] == 1) {
layer.msg(data['info']);
// 更新密码页面
var html1 = "新密码:<input type='text' name='pwd'><br>确认密码:<input type='text' name='repwd'> <input type='button' value='更改密码'> ";
$(".maina").html(html1);
} else {
//登陆失败
layer.msg(data['info']);
}
return false;
},'json');
}); $(document).on('click','#repwd',function () {
$.post('{% url 'app01:repwd' %}', $('form').serialize(), function (data) { if (data['s'] == 1) {
layer.msg(data['info']);
// 跳转主页面
location.href="{% url 'app01:index' %}";
} else {
//更改失败
layer.msg(data['info']);
}
return false;
},'json');
});
</script>
python-Web-django-邮箱登陆的更多相关文章
- python web -- django
一. 安装 django $ pip install django (env)$ python >> import django >> django.VERSION >& ...
- python web——Django架构
环境:windows/linux/OS 需要的软件:Firefox 浏览器(别的也可以 不过firfox和python的webdriver兼容性好) git版本控制系统(使用前要配置 用户 编辑器可以 ...
- python web django base skill
web框架本质 socket + 业务逻辑 框架实现socket tonado node.js 使用WSGI实现socket django flask 自己实现框架思路 wsgiref socket ...
- python 模拟126邮箱登陆
#coding=utf-8from selenium import webdriverimport time mydriver=webdriver.Firefox()mydriver.get(&quo ...
- python web django 2nd level -- 待更新
练习代码位置 实例代码位置 --> app: myblog Form 利用Form表单验证,自己写的html 思路: 新建一个类 LoginForm(forms.Form) 新建对象 obj = ...
- Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器
Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器 闲着无聊的时候部署了一个Django项目玩,用vm虚拟机部署的. 准备工作 我使用的系统是Ubuntu16 ...
- python web框架Django入门
Django 简介 背景及介绍 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的框架模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以 ...
- [Python] 利用Django进行Web开发系列(一)
1 写在前面 在没有接触互联网这个行业的时候,我就一直很好奇网站是怎么构建的.现在虽然从事互联网相关的工作,但是也一直没有接触过Web开发之类的东西,但是兴趣终归还是要有的,而且是需要自己动手去实践的 ...
- [Python] 利用Django进行Web开发系列(二)
1 编写第一个静态页面——Hello world页面 在上一篇博客<[Python] 利用Django进行Web开发系列(一)>中,我们创建了自己的目录mysite. Step1:创建视图 ...
- python web框架——扩展Django&tornado
一 Django自定义分页 目的:自定义分页功能,并把它写成模块(注意其中涉及到的python基础知识) models.py文件 # Create your models here. class Us ...
随机推荐
- poj3417 Network/闇の連鎖[树上差分]
首先隔断一条树边,不计附加边这个树肯定是断成两块了,然后就看附加边有没有连着的两个点在不同的块内. 方法1:BIT乱搞(个人思路) 假设考虑到$x$节点隔断和他父亲的边,要看$x$子树内有没有点连着附 ...
- tomcat启动失败_严重: A child container failed during start
错误信息代码: 严重: A child container failed during start java.util.concurrent.ExecutionException: org.apach ...
- RedisTemplate的各种操作(set、hash、list、string)
RedisTemplate的各种操作(set.hash.list.string) 注入以下RedisTemplate @Autowired private RedisTemplate<Strin ...
- Ion-select and ion-option list styling 自定义样式
https://forum.ionicframework.com/t/ion-select-and-ion-option-list-styling/117028
- git 版本撤销,回退等
git checkout -- <file> #丢弃工作区的修改, 不要省略 -- ,这是只在工作区(work tree)修改了内容,还没有add 到暂存区,此时想撤销修改. ...
- springboot错误1 Failed to execute goal org.springframework.boot:spring-boot-maven-plugin
关于Springboot打包错误的问题 | Failed to execute goal org.springframework.boot:spring-boot-maven-plugin https ...
- SpringBoot项目中,Mybatis的使用
项目中使用MyBatis的地方很少,可以说是基本不用,慕课网上面这个项目介绍给也就是一些比较简单的使用例子,我用JPA比较的多,MyBatis有两种使用方式 1.导入MyBatis的依赖 <de ...
- .net文件夹上传源码
核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开 ...
- BZOJ 1951: [Sdoi2010]古代猪文 ExCRT+欧拉定理+Lucas
欧拉定理不要忘记!! #include <bits/stdc++.h> #define N 100000 #define ll long long #define ull unsigned ...
- 灰度图像--图像分割 Sobel算子
学习DIP第44天 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不 ...