Django之邮箱验证在项目中的应用
2019-03-12 20:28
148 查看
VIEWS
import random,time from django.core.mail import EmailMultiAlternatives from django.http import JsonResponse from Buyer.models import EmailVaild import hashlib #定义一个加密函数 def pwd_encrypt(password): md5 = hashlib.md5() md5.update(password.encode()) result = md5.hexdigest() return result #随机生成4位数 def get_random_data(): number = random.randint(1000,9999) #获得随机四位数 return number def register_mail(request): result = {'state':'error','data':''} #用于收集运行结果 if request.method == 'GET': #1.获取邮箱 email = request.GET.get('email') #从web中获取传过来的参数 if email: #第一次get请求为空, 而第二次AJAX跳转携带参数,所以判断不为空,进行下一步 try: number = get_random_data() subject = '小鱼干真好吃' #邮件主题 text_content = '最爱小鱼干' html_content = ''' <div> <p> 你的验证码为%d,注册完来买小鱼干吧 </p> </div> '''%number message = EmailMutiAlternatives(subject,text_content,'xxxxx@163.com',[email]) #参数为主题,内容,寄件人邮箱,以及传递过来的邮箱 message.attach_alternative(html_content,'text/html') message.send() except Exception as e: result['data'] = str(e) else: result['data'] = 'success' result['data'] = 'success' #保存数据 email_vaild = EmailVaild() #创建模型类 email_vaild.value() = number #保存验证码 email_vaild.email_address = email #保存邮箱地址 email_vaild.times = datetime.datetime.now() #记录当前时间 email_vaild.save() #保存到数据库 finally: return JsonResponse(result) if request.method == 'POST':#如果是表单提交 #获取表单提交过来的内容 username = request.POST.get('username') #获取邮箱 code = request.POST.get('code') #验证码 userpass = request.POST.get('userpass') #获取密码 email_current = EmailVaild.objects.filter(email_address=username).first() #获取数据库中邮箱对应的第一条数据, if email_current: #如果数据库中有记录,即不为空 #判断验证码 if code == email_current.value: now = time.mktime(datetime.datetime.now().timetuple()) #当前时间 db_now = time.mktime(email_current.times.timetuple()) #数据库中保存的时间 #print(now) 可以打印看看 #print(db_now) if now - db_now >= 360: #间隔6分钟,也可以设置为60秒,这里只是为了测试 result['data'] = '验证码失效,请重新获取' #删除数据库中的信息 email_current.delete() else: #保存此用户 buyer = Buyer() buyer.name = username buyer.password = pwd_encrypt(userpass) #这里是对密码进行md5加密加入到数据库中 buyer.save() result['state'] = 'sucess' result['data'] = 'sucess' #删除库中的数据 email_current.delete() return redirect('/buyer/login/') #重定向到登录界面 else: result['data'] = '验证码错误' else: result['data'] = '用户不存在' return render(request, 'buyer/register_mail.html')
HTML
配置Ajax
SETTINGS中添加
EMAIL_HOST_USER = ‘xxxx@163.com’ #寄件人地址
EMAIL_HOST_PASSWORD = ‘xxxxx’ #激活码网站获取
EMAIL_USE_SSL = True
EMAIL_HOST = ‘smtp.163.com’
EMAIL_PORT = ‘994’
相关文章推荐
- django实现用户注册以及邮箱验证功能
- Django 修改重置密码并通过邮箱进行验证的思考
- Ubuntu虚拟环境中Django项目和应用创建
- php 获取gmail 联系人邮箱,应用oauth2.0验证
- 阿里云部署Django项目(超详细图文教程) —— Part2. 使用Nginx, Gunicorn, virtualenv, supervisor 部署Django应用
- 在Django中进行用户注册和邮箱验证的方法
- python - django 环境搭建,创建项目并添加应用。
- Django项目中包含多个应用时对url的配置方法
- [置顶] Django创建项目与应用,及扩展与注意事项(一)
- XML验证框架在项目中的应用
- Django项目开发举例举例之创建应用模型(2)
- Django 2.0 手动创建项目和应用
- 在Maven项目中关于SSM框架中邮箱验证登陆
- 五、Django项目中包含多个应用时对url的配置
- django开发项目实例3--用session是实现简单的登陆、验证登陆和注销功能
- 文本框中事件应用(含邮箱地址验证)4-9
- django基础入门(2)-创建项目和应用
- Django项目中的Admin应用详解
- Django项目详解——MySQL配置及应用
- 在Asp.NET项目中应用jquery.Validation进行客户端验证