Django验证码captcha实战介绍

今天给大家介绍Django如何利用captcha生成验证码

1、看一下效果图

在这里插入图片描述

2 查看captcha开发框架的介绍和基本使用情况

captcha官方介绍链接 点击进入
在这里插入图片描述
这是我在官方介绍上截取的一段信息,读者也可以点击官方链接去查看信息,首先我们来分析上面图片的内容
1,安装库 pip install django-simple-captcha想必只要有python基础的人都知道
2,将captcha添加到app库中,请看下面

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'users',
    'courses',
    'operations',
    'organizations',
    'xadmin',
    'crispy_forms',
    # 也就是下面的这个
    'captcha'
]

3, 执行迁移,想必不用多介绍 和数据库迁移一样

python manage.py migrate

4, 配置url文件

	# 这个是注册页面的url name用于反向解析
    path('register/', views.Registeriew.as_view(), name="register"),
    # captcha在运行时会时一个app,使用include,直接这样写就可以了
    path('captcha/', include('captcha.urls'))

5,Form表单文件
Form表单文件主要是对POST请求数据进行第一次过滤,不满足要求信息 例如长度不够,格式不符合要求的我们不进行查找,不查找数据库,满足要求后在进行数据库的查询

class RegisterForm(forms.Form):
	# email和password时post请求的两个数据
    email = forms.EmailField(required=True)
    password = forms.CharField(required=True, min_length=5)
    # 创建一个CaptchaField对象
    captcha = CaptchaField()

6, View视图文件
在视图文件中,我们定义了get和post请求函数,,我们在返回视图前创建RegisterForm

class Registeriew(View):
    def get(self,request):
   	   # 创建 RegisterForm
   	   register_from = RegisterForm()
   	   # 将register_from传递到html文件当中
       return render(request, "register.html", {"register_from": register_from})

    def post(self,request):
       return render(request, "register.html", {})

7,html文件

                   <div class="form-group marb8 captcha1 {% if register_form.errors.captcha %}errorput{% endif %}">
                            <label>&nbsp;&nbsp;</label>
                            <!--在验证码后面将register_from的captcha传递过来即可-->
                            {{ register_from.captcha }}
                        </div>

基本的使用就以上的步骤

3、 官网解释

def some_view(request):
    if request.POST:
        form = CaptchaTestForm(request.POST)

        # Validate the form: the captcha field will automatically
        # check the input
        if form.is_valid():
            human = True
    else:
        form = CaptchaTestForm()

    return render_to_response('template.html',locals())

这是官网上的一段form的代码,其实也就是将请求传递进去,先检验用户名等输入时候格式正确,然后利用locals()将参数传递到HTML文件中

from django.views.generic.edit import CreateView
from captcha.models import CaptchaStore
from captcha.helpers import captcha_image_url
from django.http import HttpResponse
import json

class AjaxExampleForm(CreateView):
    template_name = ''
    form_class = AjaxForm

    def form_invalid(self, form):
        if self.request.is_ajax():
            to_json_response = dict()
            to_json_response['status'] = 0
            to_json_response['form_errors'] = form.errors

            to_json_response['new_cptch_key'] = CaptchaStore.generate_key()
            to_json_response['new_cptch_image'] = captcha_image_url(to_json_response['new_cptch_key'])

            return HttpResponse(json.dumps(to_json_response), content_type='application/json')

    def form_valid(self, form):
        form.save()
        if self.request.is_ajax():
            to_json_response = dict()
            to_json_response['status'] = 1

            to_json_response['new_cptch_key'] = CaptchaStore.generate_key()
            to_json_response['new_cptch_image'] = captcha_image_url(to_json_response['new_cptch_key'])

            return HttpResponse(json.dumps(to_json_response), content_type='application/json')

上面是ajax请求表单的例子,运行程序访问,即可达到最上面图片的效果

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
captcha-plus是一种进阶版的验证码系统,用于验证用户是否为真实人类而不是机器或恶意程序。传统的验证码通常是要求用户识别并输入随机生成的文字或数字,而captcha-plus在此基础上进行了改进和升级。 captcha-plus的特点之一就是多样化的验证方式。除了文字和数字之外,它还可以采用更复杂的验证元素,例如图像识别、滑动拼图、声音识别等。这种多样化的验证方式能够更好地确保用户的真实性,并提高验证码系统的安全性和难度。 另外,captcha-plus还采用了智能化的识别技术。它能够根据用户的行为和操作习惯进行行为分析,从而判断是否为真实用户。通过分析用户的点击方式、键盘输入速度、鼠标移动轨迹等行为特征,captcha-plus可以识别出机器生成的请求或恶意程序的攻击,从而提高验证的准确性和可靠性。 captcha-plus还具有自适应的能力。它可以根据不同的用户环境和设备特性,自动调整验证码的难度和形式。比如,对于移动设备用户,可以提供更适合触摸操作的验证方式;对于视力有障碍的用户,可以提供更易于辨识的验证元素。这种自适应能力能够提升用户体验,并降低用户因验证码难度过高或不适应环境而放弃注册或访问的可能性。 综上所述,captcha-plus作为一种进阶版的验证码系统,通过多样化的验证方式、智能化的识别技术和自适应的能力,能够更有效地防止机器或恶意攻击,提高用户验证的准确性和安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值