一、安装第三方库:
安装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>