Django开发笔记一

Django开发笔记二

Django开发笔记三

Django开发笔记四

Django开发笔记五

Django开发笔记六

1、邮箱激活

users app下,models.py:

  1. class EmailVerifyRecord(models.Model):
  2. code = models.CharField(max_length=20, verbose_name=u"验证码")
  3. email = models.EmailField(max_length=50, verbose_name=u"邮箱")
  4. send_type = models.CharField(verbose_name=u"发送类型",
  5. choices=(("register", u"注册"), ("forget", u"忘记密码"), ("update_email", u"修改邮箱")),
  6. max_length=50)
  7. send_time = models.DateTimeField(verbose_name=u"发送时间", default=datetime.now)
  8.  
  9. class Meta:
  10. verbose_name = u"邮箱验证码"
  11. verbose_name_plural = verbose_name
  12.  
  13. def __unicode__(self):
  14. return '{0}({1})'.format(self.code, self.email)

在utils app下:email_send.py:

  1. # coding=utf-8
  2.  
  3. from random import Random
  4. from django.core.mail import send_mail
  5.  
  6. from users.models import EmailVerifyRecord
  7. from touchrnb.settings import EMAIL_FROM
  8.  
  9. def random_str(randomlength=8):
  10. str = ''
  11. chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789'
  12. length = len(chars) - 1
  13. random = Random()
  14. for i in range(randomlength):
  15. str += chars[random.randint(0, length)]
  16. return str
  17.  
  18. def send_register_email(email, send_type="register"):
  19. email_record = EmailVerifyRecord()
  20. if send_type == "update_email":
  21. code = random_str(4)
  22. else:
  23. code = random_str(16)
  24. email_record.code = code
  25. email_record.email = email
  26. email_record.send_type = send_type
  27. email_record.save()
  28.  
  29. email_title = ""
  30. email_body = ""
  31.  
  32. if send_type == "register":
  33. email_title = "慕学网激活链接"
  34. email_body = " 请点击下面的链接激活你的帐号:http://127.0.0.1:8000/active/{0}".format(code)
  35.  
  36. send_status = send_mail(email_title, email_body, EMAIL_FROM, [email])
  37. if send_status:
  38. pass
  39.  
  40. elif send_type == "forget":
  41. email_title = "慕学网密码重置链接"
  42. email_body = " 请点击下面的链接重置密码:http://127.0.0.1:8000/reset/{0}".format(code)
  43.  
  44. elif send_type == "update_email":
  45. email_title = "慕学网在线邮箱修改验证码"
  46. email_body = " 你的邮箱验证码为:{0}".format(code)
  47.  
  48. send_status = send_mail(email_title, email_body, EMAIL_FROM, [email])
  49. if send_status:
  50. pass

settings.py:

  1. EMAIL_HOST = "smtp.163.com"
  2. EMAIL_PORT = 25
  3. EMAIL_HOST_USER = "17xxxxxx@163.com"
  4. EMAIL_HOST_PASSWORD = "xxxxxx"
  5. EMAIL_USER_TLS = False
  6. EMAIL_FROM = "17xxxxxx@163.com"

2、处理邮箱中的链接:

users.py:

  1. url(r'^active/(?P<active_code>\w+)/$', ActiveUserView.as_view(), name="ActiveUserView"),

views.py:

  1. class ActiveUserView(View):
  2. def get(self, request, active_code):
  3. all_records = EmailVerifyRecord.objects.filter(code=active_code)
  4. if all_records:
  5. for record in all_records:
  6. email = record.email
  7. user = UserProfile.objects.get(email=email)
  8. user.is_active = True
  9. user.save()
  10. else:
  11. return render(request, "active_fail.html")
  12.  
  13. return render(request, "login.html")

Django开发笔记四的更多相关文章

  1. Django开发笔记六

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.登录功能完善 登录成功应该是重定向到首页,而不是转发 ...

  2. Django开发笔记五

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.页面继承 定义base.html: <!DOC ...

  3. Django开发笔记三

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.基于类的方式重写登录:views.py: from ...

  4. Django开发笔记二

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.xadmin添加主题.修改标题页脚和收起左侧菜单 # ...

  5. Django开发笔记一

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.运行 python manage.py runser ...

  6. Django开发笔记(一)

    Django开发笔记(一) 标签(空格分隔): Django Python 1. 创建并运行Django项目 创建开发环境 安装Django pip install django==version 执 ...

  7. Django开发笔记之数据库的设计

    后台采用Django开发,可以体会到开发的便利之处,对于一个项目来说,首先最重要的是数据库的设计,那么在Django下数据库设计主要是如下步骤: 1,需求分析,这点子不用多说,而我也深刻体会到了没有原 ...

  8. Django开发笔记

    django基础之视图 1.在Django中网页前端的页面和其他内容都是由视图来传递的(视图对web请求进行回应)Django通过检查请求的URL(准确地说,是URL里域名之后的那部分)来选择使用哪个 ...

  9. django 开发笔记1

    1.布置到云服务器 使用 python3 manage.py runserver提示错误,需要将settings.py 中 ALLOWED_HOSTS 字典中加入 localhost;0.0.0.0; ...

随机推荐

  1. Get The Treasury HDU - 3642(扫描线求三维面积交。。体积交)

    题意: ...就是求体积交... 解析: 把每一层z抽出来,计算面积交, 然后加起来即可..! 去看一下 二维面积交的代码 再看看这个三维面积交的代码.. down函数里 你发现了什么规律!!! 参考 ...

  2. Windows Server 脚本记录Apache、Mysql 每分钟并发数

    打开windows server 计划任务管理器.定时执行如下的Bat脚本即可. 在D盘新建一个monitor文件夹,创建ApacheMysql.bat文件.内容如下: 在monitor文件夹中新建m ...

  3. ANDROID OptionMenu 菜单列表

    package com.app.menu; import android.os.Bundle; import android.app.Activity; import android.content. ...

  4. uoj【UNR #3】To Do Tree 【贪心】

    题目链接 uojUNR3B 题解 如果不输出方案,是有一个经典的三分做法的 但是要输出方案也是可以贪心的 设\(d[i]\)为\(i\)节点到最深的儿子的距离 贪心选择\(d[i]\)大的即可 #in ...

  5. A1073. Scientific Notation

    Scientific notation is the way that scientists easily handle very large numbers or very small number ...

  6. A1080. Graduate Admission

    It is said that in 2013, there were about 100 graduate schools ready to proceed over 40,000 applicat ...

  7. double

    看double精度 和 数字经过计算后的最小精度

  8. pyqt5 设置窗口按钮等可用与不可用

    setEnabled(True) 设置窗口或者按钮可用,Flase不可用

  9. pycharm git无法使用问题(待解决)

    PyCharm 2017.3.1 (Community Edition)Build #PC-173.3942.36, built on December 14, 2017JRE: 1.8.0_152- ...

  10. python自动化运维之路~DAY2

    python自动化运维之路~DAY2 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.字符编码与转码 1.什么是编码. 基本概念很简单.首先,我们从一段信息即消息说起,消息以人类 ...