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 ...
随机推荐
- Codeforces Round #446 Div1 E
题目大意 有n个数,进行k轮操作:随机一个i,让\(a_i\)减1,然后ans加上\(\Pi_{j\neq i}a_i\). 求ans的期望. 分析 发现,造成的伤害就是原来的ai的积减去k轮操作后的 ...
- jpa介绍
1.jpa的介绍 JPA是Java Persistence API的简称, 中文名为Java持久层API; 是JDK 5.0注解或XML描述对象-关系表的映射关系, 并将运行期的实体对象持久化到数据库 ...
- gdb插件gef安装爬坑
0x00: gdb是linux下的调试利器,但无奈界面不太友好,所以需要一些辅助插件. 0x01:关于插件选择 之前我一直使用的是pead,之前了解到还有个插件gef,因为gef支持多构架,而且hea ...
- vue大文件上传断点续传解决方案
之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需 ...
- Python基础之变量和常量
变量 将运算得到中间结果暂存到内存,以便后续程序调用. 变量的命名规则: 变量由字母.数字.下划线搭配组合而成 不能以数字开头,更不能全是数字 不能是Python中的关键字,这些符号和字母已经被Pyt ...
- linux端口释放
查看linux连接端口范围 cat /proc/sys/net/ipv4/ip_local_port_range 调低端口释放等待时间 echo 20 > /proc/sys/net/ipv4 ...
- 2016 Multi-University Training Contest 4 部分题解
1001,官方题解是直接dp,首先dp[i]表示到i位置的种类数,它首先应该等于dp[i-1],(假设m是B串的长度)同时,如果(i-m+1)这个位置开始到i这个位置的这一串是和B串相同的,那么dp[ ...
- C++入门经典-例9.3-类模板,简单类模板
1:使用template关键字不但可以定义函数模板,而且可以定义类模板.类模板代表一族类,它是用来描述通用数据类型或处理方法的机制,它使类中的一些数据成员和成员函数的参数或返回值可以取任意数据类型.类 ...
- C++入门经典-例8.6-多重继承的构造顺序
1:单一继承是先调用基类的构造函数,然后调用派生类的构造函数,但多重继承将如何调用构造函数呢?多重继承中的基类构造函数被调用的顺序以派生表中声明的顺序为准.派生表就是多重继承定义中继承方式后面的内容, ...
- TCP之RST报文段
TCP 首部中的 RST 比特是用于 "复位" 的.一般来说,无论何时一个报文段发往基准的连接(referenced connection)出现错误,TCP 都会发出一个复位报文段 ...