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教程之用py2exe将PY文件转成EXE文件
Jun 12 Python
python遍历类中所有成员的方法
Mar 18 Python
Python选课系统开发程序
Sep 02 Python
对python多线程SSH登录并发脚本详解
Feb 14 Python
Django框架会话技术实例分析【Cookie与Session】
May 24 Python
pycharm安装及如何导入numpy
Apr 03 Python
解决Jupyter notebook中.py与.ipynb文件的import问题
Apr 21 Python
Python流程控制语句的深入讲解
Jun 15 Python
Python基于time模块表示时间常用方法
Jun 18 Python
python线性插值解析
Jul 05 Python
Python如何给函数库增加日志功能
Aug 04 Python
解决Tkinter中button按钮未按却主动执行command函数的问题
May 23 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
PHP MPDF中文乱码的解决方式
2015/12/08 PHP
Yii控制器中filter过滤器用法分析
2016/07/15 PHP
PDO::setAttribute讲解
2019/01/29 PHP
JavaScript 精粹读书笔记(1,2)
2010/02/07 Javascript
JavaScript中的prototype使用说明
2010/04/13 Javascript
Javascript图像处理—平滑处理实现原理
2012/12/28 Javascript
Jquery的hover方法让鼠标经过li时背景变色
2013/09/06 Javascript
jQuery插件slider实现拖动滑块选取价格范围
2015/04/30 Javascript
表单验证正则表达式实例代码详解
2015/11/09 Javascript
解决jquery无法找到其他父级子集问题的方法
2016/05/10 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
canvas实现钟表效果
2017/02/13 Javascript
JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动)
2017/06/19 Javascript
小试小程序云开发(小结)
2019/06/06 Javascript
如何使用CSS3+JQuery实现悬浮墙式菜单
2019/06/18 jQuery
vue中的 $slot 获取插槽的节点实例
2019/11/12 Javascript
JavaScript中while循环的基础使用教程
2020/08/11 Javascript
JS异步宏队列微队列原理详解
2020/09/09 Javascript
js实现菜单跳转效果
2020/12/11 Javascript
python命令行参数解析OptionParser类用法实例
2014/10/09 Python
python简单程序读取串口信息的方法
2015/03/13 Python
Python交互环境下实现输入代码
2018/06/22 Python
tensorflow实现加载mnist数据集
2018/09/08 Python
Python 实现异步调用函数的示例讲解
2018/10/14 Python
python 常用日期处理-- datetime 模块的使用
2020/09/02 Python
python中K-means算法基础知识点
2021/01/25 Python
pycharm 实现光标快速移动到括号外或行尾的操作
2021/02/05 Python
Canvas中设置width与height的问题浅析
2018/11/01 HTML / CSS
英国鞋类及配饰零售商:Kurt Geiger
2017/02/04 全球购物
美国知名保健品网站:LuckyVitamin(支持中文)
2017/08/09 全球购物
西班牙在线药店:DosFarma
2020/03/28 全球购物
门诊手术室工作制度
2014/01/30 职场文书
人力资源经理的岗位职责范本
2014/02/28 职场文书
学校运动会广播稿
2014/10/11 职场文书
学术会议邀请函
2015/01/30 职场文书
2019毕业论文致谢词
2019/06/24 职场文书