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之玩转字符串(2)更新篇
Sep 28 Python
python数据清洗系列之字符串处理详解
Feb 12 Python
Python实现高斯函数的三维显示方法
Dec 29 Python
对Python3使运行暂停的方法详解
Feb 18 Python
Python中如何使用if语句处理列表实例代码
Feb 24 Python
Python安装Flask环境及简单应用示例
May 03 Python
Django项目基础配置和基本使用过程解析
Nov 25 Python
使用python+poco+夜神模拟器进行自动化测试实例
Apr 23 Python
pandas 像SQL一样使用WHERE IN查询条件说明
Jun 05 Python
Python+Kepler.gl实现时间轮播地图过程解析
Jul 20 Python
Python发送邮件实现基础解析
Aug 14 Python
Python实现疫情地图可视化
Feb 05 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
PHP4之COOKIE支持详解
2006/10/09 PHP
详解thinkphp实现excel数据的导入导出(附完整案例)
2016/12/29 PHP
PHP获取当前URL路径的处理方法(适用于多条件筛选列表)
2017/02/10 PHP
JS Replace()的高级使用方法介绍
2013/06/29 Javascript
jQuery中after的两种用法实例
2013/07/03 Javascript
js实现的牛顿摆效果
2015/03/31 Javascript
js实现点击切换TAB标签实例
2015/08/21 Javascript
jQuery实用技巧必备(上)
2015/11/02 Javascript
JavaScript+html5 canvas制作的百花齐放效果完整实例
2016/01/26 Javascript
基于JS实现Android,iOS一个手势动画效果
2016/04/27 Javascript
微信小程序 progress组件详解及实例代码
2016/10/25 Javascript
从零开始学习Node.js系列教程三:图片上传和显示方法示例
2017/04/13 Javascript
关于webpack2和模块打包的新手指南(小结)
2017/08/07 Javascript
详解angular2如何手动点击特定元素上的点击事件
2018/10/16 Javascript
新手入门js闭包学习过程解析
2019/10/08 Javascript
[02:25]DOTA2英雄基础教程 生死判决瘟疫法师
2013/12/06 DOTA
Python函数学习笔记
2008/10/07 Python
python 参数列表中的self 显式不等于冗余
2008/12/01 Python
python模拟登录百度代码分享(获取百度贴吧等级)
2013/12/27 Python
Python中用于转换字母为小写的lower()方法使用简介
2015/05/19 Python
Python常见数据类型转换操作示例
2019/05/08 Python
python 类之间的参数传递方式
2019/12/20 Python
python3连接kafka模块pykafka生产者简单封装代码
2019/12/23 Python
python 的topk算法实例
2020/04/02 Python
Python使用configparser读取ini配置文件
2020/05/25 Python
详解CSS3中字体平滑处理和抗锯齿渲染
2017/03/29 HTML / CSS
Janie and Jack美国官网:GAP旗下的高档童装品牌
2019/09/09 全球购物
杭州SQL浙江浙大网新恩普软件有限公司
2013/07/27 面试题
如何提高SQL Server的安全性
2016/07/25 面试题
医学专业五年以上个人求职信
2013/12/03 职场文书
大学生新学期计划书
2014/04/28 职场文书
整改落实情况汇报材料
2014/10/29 职场文书
西柏坡观后感
2015/06/08 职场文书
基于Redis实现分布式锁的方法(lua脚本版)
2021/05/12 Redis
Python图片处理之图片裁剪教程
2021/05/27 Python
springboot 启动如何排除某些bean的注入
2021/08/02 Java/Android