算法流程如下:
1)处理用户注册数据,存入数据库,is_activity字段设置为False,用户未认证之前不允许登陆
2)产生token,生成验证连接URL
3)发送验证邮件
4)用户通过认证邮箱点击验证连接,激活is_activity字段,可以登录
5)若验证连接过期,删除用户在数据库中的注册信息。

#系统root邮箱 settings.py

EMAIL_HOST = 'smtp.qq.com'
EMAIL_HOST_USER = '17********@qq.com'
#授权码
EMAIL_HOST_PASSWORD = 'dxsblqtqohiycgcb'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
#可以域名,可以设置本地
DOMAIN = 'http://127.0.0.1:8000'

#注册相关路由 url.py

url(r'^register/$', reg, name='reg'),
url(r'^activate/(?P<token>\w+.[-_\w]*\w+.[-_\w]*\w+)/$', activate,name='activate'),

#注册视图函数 user/views.py

def reg(request):
try:
if request.method == 'POST':
print request.method
register_form = RegForm(request.POST)
if register_form.is_valid():
print '数据验证通过!'
username=register_form.cleaned_data['username']
email=register_form.cleaned_data['email']
password=register_form.cleaned_data['password']
user = UserProfile.objects.create(
username=username,
email=email,
password = password,
)
user.save()
print '注册信息保存成功!'
# 邮箱验证
token = token_confirm.generate_validate_token(username)
token_url = '/'.join([django_settings.DOMAIN, 'activate', token])
message = "\n".join([u'{0},欢迎加入XX'.format(username), u'请访问该链接,完成用户验证:',u"< a href = "+token_url+u" > "+token_url+u" < / a > " ])
send_mail(u'注册用户验证信息', message, '17******@qq.com', [email], fail_silently=False)
return render(request, 'common/success.html', {'reason': u"已将激活链接发送到您的注册邮箱,请登录激活,有效期为1个小时"})
else:
return render(request, 'common/failure.html', {'reason': register_form.errors})
else:
register_form = RegForm()
except Exception as e:
print '错误',e

#用户点击邮箱链接,账户激活 user/views.py

def activate(request, token):
try:
username = token_confirm.confirm_validate_token(token)
except:#令牌过期
username = token_confirm.remove_validate_token(token)
users = UserProfile.objects.filter(username=username)
for user in users:
user.delete()#删除注册用户
return render(request, 'common/failure.html', {
'reason': u'对不起,验证链接已经过期,请重新<a href=\"' + unicode(django_settings.DOMAIN) + u'/register\">注册</a>'})
try:
user = UserProfile.objects.get(username=username)
except UserProfile.DoesNotExist:
return render(request, 'common/failure.html', {'reason': u"对不起,您所验证的用户不存在,请重新注册"})
user.is_active = True
user.save()
message = u'终于等到你!账号激活成功,可以进行<a href=\"' + unicode(django_settings.DOMAIN) + u'/login\">登录</a>操作'
return render(request, 'common/success.html', {'reason': message})

  

参考:https://my.oschina.net/keyven/blog/726123

Django用户注册、邮箱验证实践的更多相关文章

  1. PHP用户注册邮箱验证激活帐号

    我们在很多网站注册会员时,注册完成后,系统会自动向用户的邮箱发送一封邮件,这封邮件的内容就是一个URL链接,用户需要点击打开这个链接才能激活之前在该网站注册的帐号.激活成功后才能正常使用会员功能. 本 ...

  2. 【Python】Django【邮箱验证】 后端验证如何生成 token加密验证码 与如何解码!!!!

    1.生成token验证码方案   ,使用itsdangerous    大宝剑, 可以序列化出验证码,并能设置过期时间 安装 itsdangerous pip install itsdangerous ...

  3. ThinkPHP 3.2 用户注册邮箱验证帐号找回密码

    一.前言 当然现在有的网站也有手机短信的方式找回密码,原理就是通过发送验证码来验明正身,和发送邮件验证一样,最终还是要通过重置密码来完成找回密码的流程. 本文将使用PHP+Mysql+jQuery来实 ...

  4. ThinkPHP 3.2 用户注册邮箱验证激活帐号

    本文将结合实例,讲解如何使用PHP+Mysql完成注册帐号.发送激活邮件.验证激活帐号.处理URL链接过期的功能. 业务流程 1.用户提交注册信息. 2.写入数据库,此时帐号状态未激活. 3.将用户名 ...

  5. (进阶篇)PHP实现用户注册后邮箱验证,激活帐号

    我们在很多网站注册会员时,注册完成后,系统会自动向用户的邮箱发送一封邮件,这封邮件的内容就是一个URL链接,用户需要点击打开这个链接才能激活之前在该网站注册的帐号.激活成功后才能正常使用会员功能. 本 ...

  6. PHP用户注册邮箱并验证激活帐号

    我们在很多网站注册会员时,注册完成后,系统会自动向用户的邮箱发送一封邮件,这封邮件的内容就是一个URL链接,用户需要点击打开这个链接才能激活之前在该网站注册的帐号.激活成功后才能正常使用会员功能. 查 ...

  7. JavaMai——邮箱验证用户注册

    这篇文章简单的模拟了网上利用邮箱激活用户注册这样的一个功能 1. 呈现给用户的注册界面:(为了简单起见,就剩下两个输入域,邮箱和昵称) <%@ page language="java& ...

  8. Django商城项目笔记No.15用户部分-用户中心邮箱验证

    首先增加前端页面success_verify_email.html页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitiona ...

  9. java实现邮箱验证的功能

    在日常生活中,我们在一个网站中注册一个账户时,往往在提交个人信息后,网站还要我们通过手机或邮件来验证,邮件的话大概会是下面这个样子的: 用户通过点击链接从而完成注册,然后才能登录. 也许你会想,为什么 ...

随机推荐

  1. oracle怎么卸载

    Oracle Database,又名Oracle RDBMS,或简称Oracle.是甲骨文公司的一款关系数据库管理系统.到目前仍在数据库市场上占有主要份额.劳伦斯·埃里森和他的朋友,之前的同事Bob ...

  2. 【问题】CentOS6.5系统"libc.so.6: version 'GLIBC_2.15' not found"解决方法

    出现"libc.so.6: version 'GLIBC_2.15' not found"问题,是由于glibc版本过低,升级glibc即可. 由于CentOS系统RPM源目前gl ...

  3. day15数据类型

    一.浮点数 之前讲过的,有序 : 列表 元组 字符串 数字类 :int flost complex bool 散列累 :集合和字典 浮点数:--包含所有小数 和复数 复数:a +bj   实部和虚部 ...

  4. python数据分析之numpy

    知乎:https://zhuanlan.zhihu.com/p/26514493 numoy安装:http://blog.csdn.net/wyc12306/article/details/53705 ...

  5. (翻译) TFS源码控制的未来 (TFSVC vs. Git)

    博主: 翻译自微软Visual Studio ALM产品组老大Brian Harry 的博客文章 The future of Team Foundation Server Version contro ...

  6. Apache JMeter录制HTTPS的方法及测试中常见问题解决

    Jmeter录制https请求,录制不到的常见解决方案: cmd java -version 显示为1.7 以jdk1.7为例,打开\Java\jre7\lib\security 中的,java.se ...

  7. Android无线测试之—UiAutomator UiSelector API介绍之一

    一. UiSelector类介绍: 1) UiSelector类说明: UiSelector代表一种搜索条件,可以在当前界面上查询和获取特定元素的句柄,当找到多余一个的匹配元素,则返回布局层次结构上第 ...

  8. Spring整合Velocity模版引擎

    1. 首先通过pom.xml自动加载velocity扩展包到工程: <dependency> <groupId>velocity</groupId> <art ...

  9. Java中Solr集群的测试

    import org.apache.solr.client.solrj.impl.CloudSolrServer; import org.apache.solr.common.SolrInputDoc ...

  10. Xamarin.Forms学习之位图(一)

    在开始我的分享之前呢,让我先问下我的问题: 1.最近更新了Xamarin 4.1.1.3,我想问下版本更新信息在哪里看? 2.更新后我新建的项目没有UWP项目了(虽然没有用过,但是我想确认是4.1.1 ...