Django实现验证码功能

本文详细介绍了如何在Django项目中集成和使用django-simple-captcha库来创建图形验证码。首先通过pip安装库,然后在settings配置文件中设置验证码参数,包括图片大小、字符数量和超时时间。接着,在路由中添加captcha的URL配置,并执行数据库迁移。在forms.py中创建包含CaptchaField的UserForm表单,最后在模板中实现点击刷新验证码的功能。
摘要由CSDN通过智能技术生成

一、安装第三方库:

安装django-simple-captcha库
在⽹站开发的登录⻚⾯中,经常会需要使⽤到图形验证码来验证。在Django中,django-simple-captcha库包提供了图形验证码的使⽤。

 pip install django-simple-captcha

二、配置:

1、在settings中的INSTALLED_APPS中添加 ‘captcha’,

INSTALLED_APPS = [
   	'''
    'captcha',
]

2、在settings最下面配置如下内容

CAPTCHA_IMAGESIZE = (8,45)   # 设置captcha图片大小

CAPTCHA_LENGTH =4   #字符个数
CAPTCHA_TIMEOUT =1  #超时(minutes)*

# 输出格式:输入框验证码图片隐藏域•
# '%(image)s %(hidden_field)s %(text_field)s'
CAPTCHA_OUTPUT_FORMAT ='%(text_field)s %(image)s %(hidden_field)s'
CAPTCHA_NOISE_FUNCTIONS =(
    'captcha.helpers.noise_null',
    'captcha.helpers.noise_arcs',
    'captcha.helpers.noise_dots',
)
CAPTCHA_CHALLENGE_FUNCT = 'captcha.helpers.random_char_challenge'

3、在项目路由中配置验证码库的路由

urlpatterns = [
  	‘’‘
    path('captcha/', include('captcha.urls')),
]

4、迁移数据库
该模块的验证码信息保存在数据库中,所以要生成对应的数据库表。

python manage.py migrate

迁移完成,对应数据库有表名为:captcha_captchastore

三、建立表单:

在App中新建forms.py

from django import forms
from captcha.fields import CaptchaField

class UserForm(forms.Form):
    username = forms.CharField(label='用户名', max_length=128)
    password = forms.CharField(label='密码', max_length=256)
    captcha = CaptchaField(label='验证码')

四、实现:

urls.py

urlpatterns = [
	'''
	path('login/', views.login, name='login'), # 登录
 ]

views.py

def login(request):
	'''
	login_form = forms.UserForm()
    return render(request, 'login.html', locals())

以上两个文件里的逻辑根据自己项目情况添加,这里只是说明。

五、点击验证码图片刷新验证码:

captcha.views 内置就有刷新验证码的方法,因此我们不必再自己去写了,非常方便。
模版文件(login.html):

{#刷新验证码的脚本,放到body部分的最后面即可#}
<script>
        $('.captcha').click(function () {
            $.getJSON('/captcha/refresh/',function (result) {
                $('.captcha').attr('src',result['image_url']);
                $('#id_captcha_0').val(result['key']);
            });
        });
</script>
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值