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实现Linux下守护进程的编写方法
Aug 22 Python
在Python的Django框架中调用方法和处理无效变量
Jul 15 Python
Python探索之修改Python搜索路径
Oct 25 Python
python实现媒体播放器功能
Feb 11 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
Apr 20 Python
python绘制散点图并标记序号的方法
Dec 11 Python
Python使用requests提交HTTP表单的方法
Dec 26 Python
利用setuptools打包python程序的方法步骤
Jan 18 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
Mar 04 Python
Python try except异常捕获机制原理解析
Apr 18 Python
python requests.get带header
May 05 Python
详解python logging日志传输
Jul 01 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伪静态页面函数附使用方法
2008/06/20 PHP
PHP面向对象——访问修饰符介绍
2012/11/08 PHP
解析link_mysql的php版
2013/06/30 PHP
PHP无限极分类函数的实现方法详解
2017/04/15 PHP
基于JQuery实现相同内容合并单元格的代码
2011/01/12 Javascript
ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
2012/12/11 Javascript
TextArea设置MaxLength属性最大输入值的js代码
2012/12/21 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
2014/10/17 Javascript
vue实现后台管理权限系统及顶栏三级菜单显示功能
2019/06/19 Javascript
bootstrap table列和表头对不齐的解决方法
2019/07/19 Javascript
JS运算符优先级与表达式示例详解
2020/09/04 Javascript
Python import自定义模块方法
2015/02/12 Python
Python读取Word(.docx)正文信息的方法
2018/03/15 Python
numpy使用fromstring创建矩阵的实例
2018/06/15 Python
Python3用tkinter和PIL实现看图工具
2018/06/21 Python
pandas中apply和transform方法的性能比较及区别介绍
2018/10/30 Python
Python 实现子类获取父类的类成员方法
2019/01/11 Python
Django ORM 查询管理器源码解析
2019/08/05 Python
Python 装饰器原理、定义与用法详解
2019/12/07 Python
python基于三阶贝塞尔曲线的数据平滑算法
2019/12/27 Python
python实现提取str字符串/json中多级目录下的某个值
2020/02/27 Python
CentOS 7如何实现定时执行python脚本
2020/06/24 Python
Django利用elasticsearch(搜索引擎)实现搜索功能
2020/11/26 Python
吃透移动端 Html5 响应式布局
2019/12/16 HTML / CSS
英国领先的电子、技术和办公用品购物网站:Ebuyer
2018/04/04 全球购物
ORACLE第二个十问
2013/12/14 面试题
安全生产月活动总结
2014/05/04 职场文书
安全生产承诺书范文
2014/05/22 职场文书
小学数学教学经验交流材料
2014/05/22 职场文书
教师优秀党员事迹材料
2014/08/14 职场文书
物业工程部主管岗位职责
2015/04/16 职场文书
辩护意见书
2015/06/04 职场文书
Golang 编译成DLL文件的操作
2021/05/06 Golang
原生Js 实现的简单无缝滚动轮播图的示例代码
2021/05/10 Javascript
MySQL数据库事务的四大特性
2022/04/20 MySQL