多种方式实现生成验证码

1.生成随机n位验证码

import random
def make_random_code(n):res = ''for i in range(n):s = chr(random.randint(65,90))num = str(random.randint(0,9))res += random.choice([s,num])return res
print(make_random_code(6))


2.生成随机背景颜色的n位验证码(Django版本)

urls.py

from django.conf.urls import url
from django.contrib import admin
from mybbs import viewsurlpatterns = [url(r'^admin/', admin.site.urls),url(r'^login/$', views.login),url(r'^get_code/$', views.get_code),
]

views.py

from django.shortcuts import *
from PIL import Image,ImageDraw,ImageFont
# 内存管理,把图片放在内存里
from io import BytesIO
import random# Create your views here.def login(request):return render(request,'login.html')def get_random_color():return (random.randint(0,255),random.randint(0,255),random.randint(0,255))def get_code(request):# 方式一# with open('./static/image/miao1.png','rb')as f :#     data = f.read()# 方式二# pip3 install pillow# from PIL import Image,ImageFont,ImageDraw# Image.new('颜色类型','长宽','颜色')img = Image.new('RGB',(125,35),color=get_random_color())# 指定字体文件font = ImageFont.truetype('./static/font/kumo.ttf',30)# ImageDraw.Draw(img)draw = ImageDraw.Draw(img)valid_code = ''# 验证码显示方式一:# draw.text((X轴,Y轴),'显示内容','颜色')# draw.text((5,5),'python',get_random_color(),font=font)# 验证码显示方式二:for i in range(4):random_num = str(random.randint(0,9))random_upper = chr(random.randint(65,90))random_lower = chr(random.randint(97,122))random_chr = random.choice([random_num,random_lower,random_upper])draw.text((i*30+10,5),random_chr,get_random_color(),font=font)valid_code += random_chrprint(valid_code)# 存到session里request.session['valid_code'] = valid_code# 生成一个内存管理对象f = BytesIO()# 将图片保存至f对象内,指定格式为pngimg.save(f,'png')# 从内存中取出data = f.getvalue()return HttpResponse(data)

views.py

login.htnl(存在继承母版,自行修改)

{% extends 'base.html' %}
{% block page-title %}<title>登录</title>
{% endblock %}
{% block page-css %}<link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css"><link rel="stylesheet" href="/static/fontawesome/css/font-awesome.min.css">
{% endblock %}
{% block page-main %}<div class="row"><div class="col-md-4" style="margin-top: 50px;"><img src="/static/image/1.png" alt=""></div><div class="col-md-6  col-md-offset-2" style="margin-top: 80px"><h2 style="padding-left: 60px;text-align: center;margin-bottom: 50px">用户登录</h2><form class="form-horizontal" action="#" method="post">{% csrf_token %}<div class="form-group"><label for="id_username" class="col-sm-2 control-label">账号</label><div class="col-sm-10"><input type="text" class="form-control" id="id_username" placeholder="请输入用户名、邮箱、手机号"name="username"></div></div><div class="form-group"><label for="id_password" class="col-sm-2 control-label">密码</label><div class="col-sm-10"><input type="password" class="form-control" id="id_password" placeholder="请输入密码"name="userpwd"></div></div><div class="form-group"><lable for="valid_code" class="col-sm-2 control-label">验证码</lable><div class="col-sm-7"><input type="text" class="form-control" id="valid_code"></div><div class="col-sm-3" style="padding: 0 10px"><img style="width: 125px" src="/get_code/" id="cod_img"></div></div><div class="form-group"><div class="col-sm-offset-2 col-sm-10"><button type="submit" class="btn btn-success" style="width: 457px" id="submit_btn">登录</button></div><div class="col-sm-offset-2 col-sm-10" style="margin-top: 10px;color: red">{{ error }}</div></div></form></div></div>
{% endblock %}
{% block page-js %}<script src="/static/jquery-3.3.1.js"></script><script src="/static/bootstrap/js/bootstrap.min.js"></script><script>$('#cod_img').click(function () {$('#cod_img')[0].src = $('#cod_img')[0].src + '?';})</script>
{% endblock %}

login.html


3.极客验证


转载于:https://www.cnblogs.com/neymargoal/p/9672595.html

【Python】多种方式实现生成验证码相关推荐

  1. java生成word文档_Java多种方式动态生成doc文档

    本来是要在Android端生成doc的(这需求...),最后方法没有好的方法能够在Android上做到完美,最后还是只能搬迁到服务器.不浪费,还是记录下各框架不支持Android的原因以及他们的特点. ...

  2. 7、python多种方式进行成单回归预测

    多种方案成单预测比较 1 背景和挖掘目标 基于关键的业务指标进行成单预测,对影响成单的因子了解 2 分析步骤 01 基于关键特征数据底表的分组处理 02 关于机会.名片表的处理  基于业务逻辑或者数据 ...

  3. Python多种方式实现”欢迎小红“

    name="小红" print("欢迎一:",name) print("欢迎二:{}".format(name)) print(" ...

  4. 一个生成验证码的Jsp页面

    2019独角兽企业重金招聘Python工程师标准>>> 一个生成验证码的Jsp页面 ------------------------------------------------ ...

  5. Python合并PDF、操作图片以及生成验证码

    2019独角兽企业重金招聘Python工程师标准>>> 在记录今天重点内容的笔记之前,我想要先记录一下匿名函数,因为之前对匿名函数的理解仅停留在了解的状态,以至于实际应用很困难,近两 ...

  6. 大乐透python预测程序_Python生成随机验证码,大乐透号码

    随机生成验证码 示例代码: import random # 导入标准模块中的random if __name__ == '__main__': check_code = "" # ...

  7. python单词词频字典_python利用多种方式来统计词频(单词个数)

    python的思维就是让我们用尽可能少的代码来解决问题.对于词频的统计,就代码层面而言,实现的方式也是有很多种的.之所以单独谈到统计词频这个问题,是因为它在统计和数据挖掘方面经常会用到,尤其是处理分类 ...

  8. Python图片处理PIL/pillow/生成验证码/出现KeyError: 和The _imagingft C module is not installed...

    近期在用Python开发自己的博客.须要用到Python生成验证码,当然肯定要用到Python的图形处理库PIL,由于我用的是windows. 所以在安装好pil之后就開始写,就依照题目所说出现了Th ...

  9. python制作验证码_Python编写生成验证码的脚本的教程

    在web开发中经常用到验证码,为了防止机器人注册或者恶意登陆和查询等,作用不容小觑 但是验证码其实不是一个函数就能搞定的,它需要生成图片和水印,其实每种语言都有相关的函数生成图片和文字水印.包括我熟悉 ...

最新文章

  1. 预告|第四届工业大数据创新竞赛决赛答辩倒计时
  2. java打jar包,引用其他.jar文件
  3. maven 工程依赖war包
  4. python raise valueerror_请教:Python多进程编程时出现raise ValueError(Pool not running) 为什么?。...
  5. [ERR0134] Requested Service is not available【转载】
  6. Java 并发编程之同步工具类 Exchanger
  7. 【ACM夏训】综合训练赛
  8. JavaSwing实现简单连连看小游戏
  9. android基于xposed框架,学习笔记:Android Xposed 框架入门
  10. Windows7系统蓝屏-解决办法, 错误代码:0x0000007F
  11. 如何选择合适的字体:宋体篇
  12. Windows 10 error code 0x80072efd
  13. H.265中针对scc的工具 -- transformskip
  14. Android补间动画原理介绍
  15. java并发机制_Java并发机制的底层实现原理.PDF
  16. ai人工智能大爆发_人工智能解释了大爆炸之前发生的事情
  17. 解决火绒提示helper_haozip.exe文件是病毒威胁
  18. shell中的浮点数运算之bc命令简介
  19. 电脑被黑客远程入侵了,该怎么办啊
  20. 小虎电商浏览器:超级店长跨境版产品采集插件怎么用?数据精准吗

热门文章

  1. Mac 技术篇-Geany编辑器批量设置制表符为空格,geany设置默认制表符替换为空格
  2. Spring Boot自动配置原理
  3. 解决AndroidManifest.xml file missing方案
  4. 图像添加Beta分布噪声
  5. Linux命令行下关机【Ubuntu】
  6. IDEA配置Tomcat出现404,The requested resource is not available终极超详细解决方案
  7. 系统通知并发问题_iOS 14 系统又出现问题了,短信通知无响应
  8. VUE el-input正则验证
  9. 475. Heaters
  10. bzoj 1010: [HNOI2008]玩具装箱toy 2011-12-27