一、引用 包

pip install django-simple-captcha

二、将captcha加入setting的 INSTALLED_APPS

三、运行python manager.py migrations 和 python manage.py migrate

四、加入路径

path('captcha/',include('captcha.urls))

五、引入Form表单

from captcha.fields import CaptchaFieldclass
captcha = CaptcchaField()#生成图片验证码和输入框

六、ajax动态验证

from django.http import JsonResponse
from captcha.models import CaptchaStore def ajax_val(request):
if request.is_ajax():
cs = CaptchaStore.objects.filter(response=request.GET['response'], hashkey=request.GET['hashkey'])
if cs:
json_data={'status':1}
else:
json_data = {'status':0}
return JsonResponse(json_data)
else:
# raise Http404
json_data = {'status':0}
return JsonResponse(json_data)

view.py

path(r'^ajax_val/',views.ajax_val, name='ajax_val'), #动态验证的路由
  <script>
$(function(){
$('#id_captcha_1').blur(function(){
// #id_captcha_1为输入框的id,当该输入框失去焦点是触发函数
json_data={
'response':$('#id_captcha_1').val(), // 获取输入框和隐藏字段id_captcha_0的数值
'hashkey':$('#id_captcha_0').val()
}
$.getJSON('/ajax_val', json_data, function(data){
//ajax发送
$('#captcha_status').remove()
if(data['status']){ //status返回1为验证码正确, status返回0为验证码错误, 在输入框的后面写入提示信息
$('#id_captcha_1').after('<span id="captcha_status" >*验证码正确</span>')
}else{
$('#id_captcha_1').after('<span id="captcha_status" >*验证码错误</span>')
}
});
});
})
</script>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>

tempalte

七、ajax刷新

path(r’refresh/$’, views.captcha_refresh, name=’captcha-refresh’)
# 只是源码介绍不用写入自己的代码中
def captcha_refresh(request):
""" Return json with new captcha for ajax refresh request """
if not request.is_ajax():
# 只接受ajax提交
raise Http404
new_key = CaptchaStore.generate_key()
to_json_response = {
'key': new_key,
'image_url': captcha_image_url(new_key),
}
return HttpResponse(json.dumps(to_json_response), content_type='application/json')

view.py

    $(function(){
$('.captcha').css({
'cursor': 'pointer'
})
# ajax 刷新
$('.captcha').click(function(){
console.log('click');
$.getJSON("/captcha/refresh/",
function(result){
$('.captcha').attr('src', result['image_url']);
$('#id_captcha_0').val(result['key'])
});});

ajax刷新

| |

最新文章

  1. 9.1.2 asp.net core 自动生成组合查询
  2. SpringMVC学习记录3
  3. iOS不使用JSONKit做Dic到JsonString的转换
  4. Apache+PHP 配置随笔
  5. 一个最小化的SpringBoot项目
  6. Swift语言学习之OC和Swift混编
  7. GCD Block
  8. linux 显示当前用户信息
  9. Linux 内核 链表 的简单模拟(1)
  10. Latex beamer
  11. CImage类
  12. Redis系统学习 三、使用数据结构
  13. JS 获取图片的base64编码
  14. visual studio 中被遗忘的任务列表和书签
  15. ECharts使用心得总结
  16. php curl_multi系列函数实现多线程抓取网页
  17. Python的unittest框架的断言总结
  18. Merge Two Sorted Lists - LeetCode
  19. 怎样通过terminal得到AWS EC2 instance的ip
  20. 滑动窗口的中位数 &#183; Sliding Window Median

热门文章

  1. UVA - 185 Roman Numerals
  2. [GKCTF2020]老八小超市儿
  3. Java高并发与多线程(四)-----锁
  4. windows中使用django时报错:A server error occurred. Please contact the administrator.
  5. ubuntu更新下载软件卡住0% [Connecting to archive.ubuntu.com (2001:67c:1360:8001::23)]
  6. 分布式事务 Seata Saga 模式首秀以及三种模式详解 | Meetup#3 回顾
  7. go语言rpc学习
  8. 在Centos7上安装Python+Selenium+Firefox+Geckodriver
  9. POJ1195 二维线段树
  10. 精通MySQL之锁篇