当前位置: 首页 > news >正文

菜鸟学Python之django-simple-captcha使用

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

环境的准备

前端框架semantic ui
Python 3.6.4

pip install django  
pip install django-simple-captcha

django-simple-captcha官方文档地址
http://django-simple-captcha.readthedocs.io/en/latest/

目标展示

输入图片说明

配置settings.py

# django_simple_captcha 验证码配置其他配置项查看文档
# 默认格式
CAPTCHA_OUTPUT_FORMAT = '%(image)s %(text_field)s %(hidden_field)s '
CAPTCHA_NOISE_FUNCTIONS = ('captcha.helpers.noise_null', # 没有样式
    # 'captcha.helpers.noise_arcs', # 线
    # 'captcha.helpers.noise_dots', # 点
)
# 图片中的文字为随机英文字母,如 mdsh
# CAPTCHA_CHALLENGE_FUNCT = 'captcha.helpers.random_char_challenge' 
 # 图片中的文字为数字表达式,如2+2=
CAPTCHA_CHALLENGE_FUNCT = 'captcha.helpers.math_challenge'   
# 超时(minutes)
CAPTCHA_TIMEOUT = 1 

配置form.py

class LoginForms(forms.Form):
    email = forms.CharField(label="邮箱", max_length=128)
    password = forms.CharField(label="密码", max_length=128, widget=forms.PasswordInput)
    captcha = CaptchaField()

配置views.py

def login(request):
    pass
   # 图片验证码
    # hashkey验证码生成的秘钥,image_url验证码的图片地址
    hashkey = CaptchaStore.generate_key()
    image_url = captcha_image_url(hashkey)
    login_form = forms.LoginForms()
    # Python内置了一个locals()函数,它返回当前所有的本地变量字典
    return render(request, 'user/login.html', locals())

html 模板中显示验证码

        <div class="field">
          <div class="ui left img input">
            <button  id='js-captcha-refresh'  class='ui icon button ' ><i class="refresh icon green"></i></button>
              <img src="{{ image_url}}" alt="captcha" class="captcha">
              <input autocomplete="off" id="id_captcha_1" name="captcha_1" type="text" placeholder="输入验证码">
              <input id="id_reg_captcha_0" name="captcha_0" type="hidden" value="{{ hashkey }}">
          </div>
        </div>

在模板中加入js代码

<script>
  $('#js-captcha-refresh').click(function(){
{#    $form = $(this).parents('form');#}

    $.getJSON($(this).data('url'), {}, function(json) {
        // This should update your captcha image src and captcha hidden input

    });

    return false;
});
  </script>

这种刷新验证码的方式是点击按钮,还有ajax请求的刷新方式,大家有兴趣可以根据官方文档研究一下

转载于:https://my.oschina.net/hellotest/blog/1623597

相关文章:

  • Swift Collection 中的 lazy 作用
  • Activiti用户任务分配
  • 2 使用unitest 模块扩展功能测试
  • 免费学习coursera的课程的操作办法
  • SylixOS Lite版本中断优先级设置
  • 小程序的iphoneX判断
  • 还在担心机器人?人工智能目前水平还不如初中生
  • linux多网卡绑定聚合-Bond详细完整版
  • HDU_1237_简单计算器
  • Docker基础技术:DeviceMapper
  • Docker社区版中Kubernetes开发
  • 云栖科技评论第38期:亚马逊推出时尚智能助手Echo Look
  • hadoop生态系统学习之路(十)MR将结果输出到hbase
  • Python入门篇(二)
  • 我为什么突然想转管理?
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 【翻译】babel对TC39装饰器草案的实现
  • Angular 响应式表单之下拉框
  • const let
  • jquery ajax学习笔记
  • nodejs:开发并发布一个nodejs包
  • Otto开发初探——微服务依赖管理新利器
  • TypeScript迭代器
  • Vue实战(四)登录/注册页的实现
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 山寨一个 Promise
  • 数组大概知多少
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 微服务核心架构梳理
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • const的用法,特别是用在函数前面与后面的区别
  • Java性能优化之JVM GC(垃圾回收机制)
  • python最赚钱的4个方向,你最心动的是哪个?
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • #1015 : KMP算法
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #mysql 8.0 踩坑日记
  • #单片机(TB6600驱动42步进电机)
  • $.ajax()方法详解
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (办公)springboot配置aop处理请求.
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (九)信息融合方式简介
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (算法设计与分析)第一章算法概述-习题
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)Unity3DUnity3D在android下调试
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • . Flume面试题
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException