Django如何实现网站注册用户邮箱验证功能


Posted in Python onAugust 14, 2019

我们在很多网站上都可以看到用户注册使用电子邮件激活或启用的方式。也就是说,用户在注册后填写正确的电子邮件地址,接着网站会发送一封启用电子邮件到用户设置的电子邮件的邮箱中,并在邮件中提供一个激活或启用的链接,在用户单击此链接后,账号正式激活或启用。

这里我们使用 Django 的 django-registration 模块可以快速实现这一过程。

1. django-registration 安装与设置

使用 pip 安装:

pip install django-registration

此模块暂时还不支持 Django2.0 以上版本,建议使用2.0以下版本安装使用。

将 registration 添加到 Django 项目设置 settings.py 中的 INSTALLED_APPS 中去,然后在 settings.py 中设置一个常数,用来指定启用码的天数。

INSTALLED_APPS = (
  'django.contrib.sites',
  'registration', #should be immediately above 'django.contrib.admin'
  'django.contrib.admin',
  # ...other installed applications...
)
ACCOUNT_ACTIVATION_DAYS = 7 # One-week activation window; you may, of course, use a different value.

运行 python manage.py migrate 以安装默认设置使用的模型。为了使模板正常工作,registration 必须出现在django.contrib.admin上方。

使用标准自定义网址,在 url.py 中添加一行设置:

url(r'^accounts/', include('registration.backends.default.urls')),

任何指定到 /accounts/的网址,都会被送到 registration 检查是否有符合的项。然后用户可以通过 /accounts/register/ 注册, 通过 /accounts/login/ 登录(当用户已注册后)等等。

2.建立 django-registration 所需的模板

当用户单击“注册”按钮后,django-registration 就会开始调用一连串的模板以及相关文本文件,这些是我们需要自己写的。所有的模板都必须放在 templates 目录下的 registration 文件夹下。

Django如何实现网站注册用户邮箱验证功能

registration_form.html : 显示注册窗体的网页,默认使用 form 变量作为窗体各字段的内容

registration_complete.html : 填写完注册窗体,单击“提交”按钮后显示的信息页面

activation_complete.html : 当账号顺利完成启用时会显示的页面

activate.html : 当账号启用失败时会显示的页面

activation_email.txt : 在发送启用邮件时使用的邮件内容

activation_email_subject.txt : 在发送启用邮件时使用的邮件主题

注意:由于 django-registration 会使用到 电子邮件发送功能,因此应该先设置好 Django 的电子邮件收发功能,可以使用 mailgun 来进行电子邮件收发。

相关设置参考 https://3water.com/article/167669.htm

至此,我们便完成了 djano-registration 相关设置,点击注册,填写信息后,便在邮箱中收到网站的验证邮件信息。

Django如何实现网站注册用户邮箱验证功能

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python基础教程之基本内置数据类型介绍
Feb 20 Python
Python实现递归遍历文件夹并删除文件
Apr 18 Python
利用python编写一个图片主色转换的脚本
Dec 07 Python
python list元素为tuple时的排序方法
Apr 18 Python
python如何生成各种随机分布图
Aug 27 Python
Python 确定多项式拟合/回归的阶数实例
Dec 29 Python
对django xadmin自定义菜单的实例详解
Jan 03 Python
python实现倒计时小工具
Jul 29 Python
详解Python中的format格式化函数的使用方法
Nov 20 Python
python 字符串的驻留机制及优缺点
Jun 19 Python
Python高并发和多线程有什么关系
Nov 14 Python
安装pyinstaller遇到的各种问题(小结)
Nov 20 Python
python 叠加等边三角形的绘制的实现
Aug 14 #Python
Django为窗体加上防机器人的验证码功能过程解析
Aug 14 #Python
Python 利用高德地图api实现经纬度与地址的批量转换
Aug 14 #Python
Django如何使用第三方服务发送电子邮件
Aug 14 #Python
Python3 chardet模块查看编码格式的例子
Aug 14 #Python
Python 从subprocess运行的子进程中实时获取输出的例子
Aug 14 #Python
python3调用windows dos命令的例子
Aug 14 #Python
You might like
给多个地址发邮件的类
2006/10/09 PHP
Yii扩展组件编写方法实例分析
2015/06/29 PHP
php简单统计在线人数的方法
2016/05/10 PHP
prototype Element学习笔记(篇二)
2008/10/26 Javascript
理解javascript回调函数
2014/12/28 Javascript
jQuery+PHP实现动态数字展示特效
2015/03/14 Javascript
Bootstrap+jfinal退出系统弹出确认框的实现方法
2016/05/30 Javascript
全面了解javascript三元运算符
2016/06/27 Javascript
Node.js复制文件的方法示例
2016/12/29 Javascript
jQuery按需加载轮播图(web前端性能优化)
2017/02/17 Javascript
在Vue中使用echarts的实例代码(3种图)
2017/07/10 Javascript
React diff算法的实现示例
2018/04/20 Javascript
react-router4按需加载(踩坑填坑)
2019/01/06 Javascript
VUEX采坑之路之获取不到$store的解决方法
2019/11/08 Javascript
vue 解决兄弟组件、跨组件深层次的通信操作
2020/07/27 Javascript
vant picker+popup 自定义三级联动案例
2020/11/04 Javascript
Python使用dis模块把Python反编译为字节码的用法详解
2016/06/14 Python
Django中的文件的上传的几种方式
2018/07/23 Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
2019/06/05 Python
Python爬虫抓取技术的一些经验
2019/07/12 Python
Python使用微信接入图灵机器人过程解析
2019/11/04 Python
已安装tensorflow-gpu,但keras无法使用GPU加速的解决
2020/02/07 Python
Django实现文章详情页面跳转代码实例
2020/09/16 Python
HTML5+CSS设置浮动却没有动反而在中间且错行的问题
2020/05/26 HTML / CSS
Java中各种基本数据类型的默认值都是什么
2016/12/22 面试题
消防安全管理制度
2014/02/01 职场文书
质检部经理岗位职责
2014/02/19 职场文书
研修心得体会
2014/09/04 职场文书
少先队入队仪式主持词
2015/07/04 职场文书
师德师风培训感言
2015/08/03 职场文书
导游词之上海杜莎夫人蜡像馆
2019/11/22 职场文书
解决MySQL存储时间出现不一致的问题
2021/04/28 MySQL
总结Python常用的魔法方法
2021/05/25 Python
python字符串的多行输出的实例详解
2021/06/08 Python
ORACLE查看当前账号的相关信息
2021/06/18 Oracle
Golang 遍历二叉树
2022/04/19 Golang