django captcha和邮箱验证机制

验证码插件--django captcha和邮箱验证机制

对于web开发在用户注册登录的环节的验证码是在开发中必不可少的一个环节,这里介绍一下我在开发中经常使用到的一个带三方的验证码插件--
captcha

一、安装

在GitHub上可以直接下载:

也可以使用pip进行安装:

二、导入

1.settings.py文件

这里需要在INSTALLED_APPS中将其注册进去:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'App01',
    'crispy_forms',
    'captcha',
]

2.form.py文件

因为是做用户注册使用,这里定义一个注册使用的form表单

from django import forms
from captcha.fields import CaptchaField

class RegisterForm(forms.Form):
    username = forms.CharField(required=True)
    password = forms.CharField(required=True,min_length=5)
    email = forms.EmailField(required=True)
    captcha = CaptchaField()  #直接引用

3.view.py文件

from . import forms
class User_reg(View):
def get(self,request):
    register_form = forms.RegisterForm
    return render(request,'reg.html',{"register_form":register_form})  #form表单发送到前端进行渲染
def post(self,request):
    pass

4.models.py文件

class EmailVerifyRecord(models.Model):
    code = models.CharField(max_length=20,verbose_name="验证码")
    email = models.EmailField(max_length=50,verbose_name="邮箱")
    send_type = models.CharField(verbose_name="验证码类型",choices=(("register","注册"),("forget","找回密码")),max_length=50)
    send_time = models.DateTimeField(verbose_name="发送时间",default=datetime.now)

4.reg.html页面

5.前端渲染的效果:

下面是页面的源码

后端数据库生成的id值

三、用户注册验证

1.views.py文件

from django.contrib.auth.hashers import make_password  #用来将明文密码进行加密
class User_reg(View):
    def get(self,request):
        # register_form = forms.RegisterForm
        return render(request,'reg.html',{})
    def post(self,request):
        register_form = forms.RegisterForm(request.POST)
        if register_form.is_valid():
            user_name = request.POST.get('username','')
            user_email = request.POST.get("email",'')
            pass_word = request.POST.get("password",'')
            user_profile = models.Userinfo()
            user_profile.username = user_name
            user_profile.email = user_email
            user_profile.password=make_password(pass_word)
            user_profile.save()
            send_register_email(user_email,"register")
            return render(request,'login.html')
        else:
            return render(request,"reg.html",{"register_form":register_form})

激活

1.urls.py文件

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url('^$',TemplateView.as_view(template_name="index.html"),name='index'),
    url(r'^login/$',views.User_login.as_view(),name='login' ),
    url(r'^reg/$',views.User_reg.as_view(),name='reg' ),
    url(r'^active/(?P<acctive_code>.*)/$',views.AciveUserView.as_view(),name='user_active'), #用户进行邮箱激活的url
]

2.views.py文件

class AciveUserView(View):
    def get(self,request,active_code):
        all_records = models.EmailVerifyRecord.objects.filter(code=active_code)
        if all_records:
            for record in all_records:
                email = record.email
                user = models.Userinfo.get(email=email)
                user.is_active = True  #这个用户表中的一个字段,用于验证用户是否进行邮政验证激活过
                user.save()
        return render(request,'login.html')
时间: 2024-11-09 22:46:32

django captcha和邮箱验证机制的相关文章

Django用户注册、邮箱验证实践

算法流程如下:1)处理用户注册数据,存入数据库,is_activity字段设置为False,用户未认证之前不允许登陆2)产生token,生成验证连接URL3)发送验证邮件4)用户通过认证邮箱点击验证连接,激活is_activity字段,可以登录5)若验证连接过期,删除用户在数据库中的注册信息. #系统root邮箱 settings.py EMAIL_HOST = 'smtp.qq.com' EMAIL_HOST_USER = '17********@qq.com' #授权码 EMAIL_HOST

ASP.NET MVC- 数据验证机制

ASP.NET MVC的数据验证机制,比起ASP.NET WEBFORM那种高效很多.下面记录以下两个示例,以便日后方便查阅. 方式一:在Controller里通过AddModelError方法返回错误的验证信息,看一下代码示例: Controller里的,注意看一下,他Add的时候提交是HTTPPOST,并且传参是传一个MODEL进来. public ActionResult Add() { return View(); } [HttpPost] public ActionResult Add

在Django中定制身份验证

在Django中定制身份验证 Django附带的认证对于大多数常见情况来说已经足够了,但您可能需要通过开箱即用的默认设置才能满足需求. 要为您的项目定制身份验证,需要了解提供的系统的哪些点可扩展或可替换. 身份验证后端为用户模型存储的用户名和密码需要针对与Django默认不同的服务进行身份验证时提供了一个可扩展的系统. 您可以给您的模型定制可以通过Django的授权系统进行检查的权限. 您可以扩展默认的用户模型,或者替换完全自定义的模型. 其他验证来源 您可能有时需要挂接到另一个身份验证来源 -

Oracle基础学习2--Oracle登录与三种验证机制

首先,Oracle安装完毕有三个默认用户 ?  Sys:数据库对象的拥有者.权限最高.password在安装的时候(口令管理)能够改变 ?  System:数据库管理员,password为manager ?  Scott:一个普通用户,password为tiger 再看连接Oracle的三种验证机制 ?  操作系统验证(具体解释见以下) ?  password文件验证 ?  数据库验证 注:前两者适用于系统用户,比方:Sys.System等:最后一个适用于普通用户.比方:Scott. 再看Ora

在Maven项目中关于SSM框架中邮箱验证登陆

1.你如果要在maven项目中进行邮箱邮箱验证,你首先要先到pom.xml文件中配置mail.jar,activation.jar包 <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4</version> </dependency> <dependency> <groupId

Flex 正则表达式 电话、邮箱验证

 一.常用验证 验证数字:^[0-9]*$ 验证n位的数字:^\d{n}$ 验证至少n位数字:^\d{n,}$ 验证m-n位的数字:^\d{m,n}$ 验证零和非零开头的数字:^(0|[1-9][0-9]*)$ 验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$ 验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$ 验证非零的正整数:^\+?[1-9][0-9]*$ 验证非零的负整数:^\-[1-9][0-9]*$ 验证非负整数(正整数 + 0)   ^\d

定制Asp.NET 5 MVC内建身份验证机制 - 基于自建SQL Server用户/角色数据表的表单身份验证

背景 在需要进行表单认证的Asp.NET 5 MVC项目被创建后,往往需要根据项目的实际需求做一系列的工作对MVC 5内建的身份验证机制(Asp.NET Identity)进行扩展和定制: Asp.NET内建的身份验证机制会使用Local DB(本地数据库)读写用户相关的信息,而在数据库驱动的项目中,管理业务信息的数据库通常是特定的数据库环境,比如远程SQL Server数据库实例或Access数据库等等,业务数据库中保存着一系列针对业务需求的数据表,因此需要定制MVC 5内建身份验证,使其操作

JavaMai——邮箱验证用户注册

这篇文章简单的模拟了网上利用邮箱激活用户注册这样的一个功能 1. 呈现给用户的注册界面:(为了简单起见,就剩下两个输入域,邮箱和昵称) [html] view plain copy print? <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01

ASP.NET 身份验证机制

ASP.NET提供了3种认证方式:windows身份验证:IIS根据应用程序的设置执行身份验证.要使用这种验证方式,在IIS中必须禁用匿名访问.Forms验证          :用Cookie来保存用户凭证,并将未经身份验证的用户重定向到自定义的登录页.Passport验证      :通过Microsoft的集中身份验证服务执行的,他为成员站点提供单独登录和核心配置文件服务. 关于这三种验证方式的配置,推荐一篇博文:http://www.cnblogs.com/chenqingwei/arc