Django开发笔记四
1、邮箱激活
users app下,models.py:
- class EmailVerifyRecord(models.Model):
- code = models.CharField(max_length=20, verbose_name=u"验证码")
- email = models.EmailField(max_length=50, verbose_name=u"邮箱")
- send_type = models.CharField(verbose_name=u"发送类型",
- choices=(("register", u"注册"), ("forget", u"忘记密码"), ("update_email", u"修改邮箱")),
- max_length=50)
- send_time = models.DateTimeField(verbose_name=u"发送时间", default=datetime.now)
- class Meta:
- verbose_name = u"邮箱验证码"
- verbose_name_plural = verbose_name
- def __unicode__(self):
- return '{0}({1})'.format(self.code, self.email)
在utils app下:email_send.py:
- # coding=utf-8
- from random import Random
- from django.core.mail import send_mail
- from users.models import EmailVerifyRecord
- from touchrnb.settings import EMAIL_FROM
- def random_str(randomlength=8):
- str = ''
- chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789'
- length = len(chars) - 1
- random = Random()
- for i in range(randomlength):
- str += chars[random.randint(0, length)]
- return str
- def send_register_email(email, send_type="register"):
- email_record = EmailVerifyRecord()
- if send_type == "update_email":
- code = random_str(4)
- else:
- code = random_str(16)
- email_record.code = code
- email_record.email = email
- email_record.send_type = send_type
- email_record.save()
- email_title = ""
- email_body = ""
- if send_type == "register":
- email_title = "慕学网激活链接"
- email_body = " 请点击下面的链接激活你的帐号:http://127.0.0.1:8000/active/{0}".format(code)
- send_status = send_mail(email_title, email_body, EMAIL_FROM, [email])
- if send_status:
- pass
- elif send_type == "forget":
- email_title = "慕学网密码重置链接"
- email_body = " 请点击下面的链接重置密码:http://127.0.0.1:8000/reset/{0}".format(code)
- elif send_type == "update_email":
- email_title = "慕学网在线邮箱修改验证码"
- email_body = " 你的邮箱验证码为:{0}".format(code)
- send_status = send_mail(email_title, email_body, EMAIL_FROM, [email])
- if send_status:
- pass
settings.py:
- EMAIL_HOST = "smtp.163.com"
- EMAIL_PORT = 25
- EMAIL_HOST_USER = "17xxxxxx@163.com"
- EMAIL_HOST_PASSWORD = "xxxxxx"
- EMAIL_USER_TLS = False
- EMAIL_FROM = "17xxxxxx@163.com"
2、处理邮箱中的链接:
users.py:
- url(r'^active/(?P<active_code>\w+)/$', ActiveUserView.as_view(), name="ActiveUserView"),
views.py:
- class ActiveUserView(View):
- def get(self, request, active_code):
- all_records = EmailVerifyRecord.objects.filter(code=active_code)
- if all_records:
- for record in all_records:
- email = record.email
- user = UserProfile.objects.get(email=email)
- user.is_active = True
- user.save()
- else:
- return render(request, "active_fail.html")
- return render(request, "login.html")
Django开发笔记四的更多相关文章
- Django开发笔记六
Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.登录功能完善 登录成功应该是重定向到首页,而不是转发 ...
- Django开发笔记五
Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.页面继承 定义base.html: <!DOC ...
- Django开发笔记三
Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.基于类的方式重写登录:views.py: from ...
- Django开发笔记二
Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.xadmin添加主题.修改标题页脚和收起左侧菜单 # ...
- Django开发笔记一
Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.运行 python manage.py runser ...
- Django开发笔记(一)
Django开发笔记(一) 标签(空格分隔): Django Python 1. 创建并运行Django项目 创建开发环境 安装Django pip install django==version 执 ...
- Django开发笔记之数据库的设计
后台采用Django开发,可以体会到开发的便利之处,对于一个项目来说,首先最重要的是数据库的设计,那么在Django下数据库设计主要是如下步骤: 1,需求分析,这点子不用多说,而我也深刻体会到了没有原 ...
- Django开发笔记
django基础之视图 1.在Django中网页前端的页面和其他内容都是由视图来传递的(视图对web请求进行回应)Django通过检查请求的URL(准确地说,是URL里域名之后的那部分)来选择使用哪个 ...
- django 开发笔记1
1.布置到云服务器 使用 python3 manage.py runserver提示错误,需要将settings.py 中 ALLOWED_HOSTS 字典中加入 localhost;0.0.0.0; ...
随机推荐
- Get The Treasury HDU - 3642(扫描线求三维面积交。。体积交)
题意: ...就是求体积交... 解析: 把每一层z抽出来,计算面积交, 然后加起来即可..! 去看一下 二维面积交的代码 再看看这个三维面积交的代码.. down函数里 你发现了什么规律!!! 参考 ...
- Windows Server 脚本记录Apache、Mysql 每分钟并发数
打开windows server 计划任务管理器.定时执行如下的Bat脚本即可. 在D盘新建一个monitor文件夹,创建ApacheMysql.bat文件.内容如下: 在monitor文件夹中新建m ...
- ANDROID OptionMenu 菜单列表
package com.app.menu; import android.os.Bundle; import android.app.Activity; import android.content. ...
- uoj【UNR #3】To Do Tree 【贪心】
题目链接 uojUNR3B 题解 如果不输出方案,是有一个经典的三分做法的 但是要输出方案也是可以贪心的 设\(d[i]\)为\(i\)节点到最深的儿子的距离 贪心选择\(d[i]\)大的即可 #in ...
- A1073. Scientific Notation
Scientific notation is the way that scientists easily handle very large numbers or very small number ...
- A1080. Graduate Admission
It is said that in 2013, there were about 100 graduate schools ready to proceed over 40,000 applicat ...
- double
看double精度 和 数字经过计算后的最小精度
- pyqt5 设置窗口按钮等可用与不可用
setEnabled(True) 设置窗口或者按钮可用,Flase不可用
- pycharm git无法使用问题(待解决)
PyCharm 2017.3.1 (Community Edition)Build #PC-173.3942.36, built on December 14, 2017JRE: 1.8.0_152- ...
- python自动化运维之路~DAY2
python自动化运维之路~DAY2 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.字符编码与转码 1.什么是编码. 基本概念很简单.首先,我们从一段信息即消息说起,消息以人类 ...