广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python django 实现验证码的功能实例代码
  • 871
分享到

python django 实现验证码的功能实例代码

验证码实例代码 2022-06-04 18:06:28 871人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

我也是刚学python Django不久很多都不懂,所以我现在想一边学习一边记录下来然后大家一起讨论! 验证码功能一开始我在网上找了很多的demo但是我在模仿他们写的时候,发现在我的版本上根本就不能运行起

我也是刚学python Django不久很多都不懂,所以我现在想一边学习一边记录下来然后大家一起讨论!

验证码功能一开始我在网上找了很多的demo但是我在模仿他们写的时候,发现在我的版本上根本就不能运行起来在前端页面显示的时候是图裂,有可能是我用的python3.5的版本和djanGo是1.10的版本的原因,我看了晚上很多的版本都是2.7的,所以我问了很多前辈和大神,终于发现了原因的所在,好了代码我就在下面帖粗来了。

这是我的项目目录。

查看图片

验证码要成功显示就必须要有一个验证码生成器,所以就要写一个验证码生成器。我在app中新建了一个py文件check_coed.py文件,这就是验证码生成器。代码如下


import random
from PIL import Image, ImageDraw, ImageFont, ImageFilter

_letter_cases = "abcdefghjkmnpqrstuvwxy" # 小写字母,去除可能干扰的i,l,o,z
_upper_cases = _letter_cases.upper() # 大写字母
_numbers = ''.join(map(str, range(3, 10))) # 数字
init_chars = ''.join((_letter_cases, _upper_cases, _numbers))

def create_validate_code(size=(120, 30),
       chars=init_chars,
       img_type="GIF",
       mode="RGB",
       bg_color=(255, 255, 255),
       fg_color=(0, 0, 255),
       font_size=18,
       font_type="Monaco.ttf",
       length=4,
       draw_lines=True,
       n_line=(1, 2),
       draw_points=True,
       point_chance=2):
 """
 @todo: 生成验证码图片
 @param size: 图片的大小,格式(宽,高),默认为(120, 30)
 @param chars: 允许的字符集合,格式字符串
 @param img_type: 图片保存的格式,默认为GIF,可选的为GIF,JPEG,TIFF,PNG
 @param mode: 图片模式,默认为RGB
 @param bg_color: 背景颜色,默认为白色
 @param fg_color: 前景色,验证码字符颜色,默认为蓝色#0000FF
 @param font_size: 验证码字体大小
 @param font_type: 验证码字体,默认为 ae_AlArabiya.ttf
 @param length: 验证码字符个数
 @param draw_lines: 是否划干扰线
 @param n_lines: 干扰线的条数范围,格式元组,默认为(1, 2),只有draw_lines为True时有效
 @param draw_points: 是否画干扰点
 @param point_chance: 干扰点出现的概率,大小范围[0, 100]
 @return: [0]: PIL Image实例
 @return: [1]: 验证码图片中的字符串
 """

 width, height = size # 宽高
 # 创建图形
 img = Image.new(mode, size, bg_color)
 draw = ImageDraw.Draw(img) # 创建画笔

 def get_chars():
  """生成给定长度的字符串,返回列表格式"""
  return random.sample(chars, length)

 def create_lines():
  """绘制干扰线"""
  line_num = random.randint(*n_line) # 干扰线条数

  for i in range(line_num):
   # 起始点
   begin = (random.randint(0, size[0]), random.randint(0, size[1]))
   # 结束点
   end = (random.randint(0, size[0]), random.randint(0, size[1]))
   draw.line([begin, end], fill=(0, 0, 0))

 def create_points():
  """绘制干扰点"""
  chance = min(100, max(0, int(point_chance))) # 大小限制在[0, 100]

  for w in range(width):
   for h in range(height):
    tmp = random.randint(0, 100)
    if tmp > 100 - chance:
     draw.point((w, h), fill=(0, 0, 0))

 def create_strs():
  """绘制验证码字符"""
  c_chars = get_chars()
  strs = ' %s ' % ' '.join(c_chars) # 每个字符前后以空格隔开

  # font = ImageFont.truetype(font_type, font_size)
  font = ImageFont.load_default().font
  font_width, font_height = font.getsize(strs)

  draw.text(((width - font_width) / 3, (height - font_height) / 3),
     strs, font=font, fill=fg_color)

  return ''.join(c_chars)

 if draw_lines:
  create_lines()
 if draw_points:
  create_points()
 strs = create_strs()

 # 图形扭曲参数
params = [1 - float(random.randint(1, 2)) / 100,0, 0, 0,1 - float(random.randint(1, 10)) / 100,float(random.randint(1, 2)) / 500, 0.001,float(random.randint(1, 2)) / 500] 
img = img.transfORM(size, Image.PERSPECTIVE, params) # 创建扭曲 
img = img.filter(ImageFilter.EDGE_ENHANCE_MORE) # 滤镜,边界加强(阈值更大) 

在html前端中

查看图片

前端中最后几句可以不加但是为了正规一点 还是加 一下吧 这样就可以刷新验证码

大概的工程就到这差不多完成了 但是还差一点就是还缺少一个字体的文件,这样才能随意的调大调小字体和设置字体。这个还网上可以下载到 就不贴出来了,文件名是

查看图片

好了现在全部完成了。以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: python django 实现验证码的功能实例代码

本文链接: https://www.lsjlt.com/news/13264.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python django 实现验证码的功能实例代码
    我也是刚学Python Django不久很多都不懂,所以我现在想一边学习一边记录下来然后大家一起讨论! 验证码功能一开始我在网上找了很多的demo但是我在模仿他们写的时候,发现在我的版本上根本就不能运行起...
    99+
    2022-06-04
    验证码 实例 代码
  • Android 验证码功能实现代码
    先给大家展示下效果图,如果大家感觉还不错,请参考实现代码 很简单的一个例子,点击刷新验证码,刷新当前显示的验证码,点击确定,如果输入的和显示的匹配,就会跳转到下一个界面中,这...
    99+
    2022-06-06
    验证码 Android
  • C#实现身份证验证功能的示例代码
    目录实践过程效果代码实践过程 效果 代码 public partial class Form1 : Form { public Form1() { ...
    99+
    2022-12-20
    C#身份证验证 C# 验证 C#身份证
  • Django中使用pillow实现登录验证码功能(带刷新验证码功能)
    首先在项目里建立common目录,编写验证码的函数 verification_code.py import random from PIL import Image, Imag...
    99+
    2022-11-12
  • Android 使用fast-verification实现验证码填写功能的实例代码
    fast-verification 验证码的验证环节现在是移动APP中不可缺少的一部分,直接使用EditText组件虽然方便但缺少了一些美感,使用fast-verificati...
    99+
    2022-06-06
    验证码 fast Android
  • Android实现短信验证功能的代码
    在我们现在开发APP过程中,当用户注册时,短信验证是必不可少的操作,这里我们就是用一个免费的第三方短信验证SDK-MOP 首先看下效果图 获取AppKey和AppSecr...
    99+
    2022-06-06
    Android
  • C#实现验证码功能
    本文实例为大家分享了C#实现验证码功能的具体代码,供大家参考,具体内容如下 分析 需要四个字符(字母(大小写)+数字) 将四个字符连接成字符串 将连接的字符...
    99+
    2022-11-12
  • SSM项目实现短信验证码登录功能的示例代码
    目录1.登入网站 zz短信平台2.导入工具类MessageUtil3.ajax 模块4. html页面5.编写controller层1.登入网站 zz短信平台 http:/...
    99+
    2022-11-13
  • Python中的行为验证码验证功能怎么实现
    本篇内容主要讲解“Python中的行为验证码验证功能怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中的行为验证码验证功能怎么实现”吧!验证类型概述滑动拼图创新行为式验证,轻松...
    99+
    2023-07-05
  • js canvas实现验证码并获取验证码功能
    本文实例为大家分享了js canvas制作验证码并获取验证码的具体代码,供大家参考,具体内容如下 最近没事写了一些小插件,今天要说的是包装一个验证码的js代码,如下: var ...
    99+
    2022-11-12
  • springboot+vue实现验证码功能
    本文实例为大家分享了springboot+vue实现验证码功能的具体代码,供大家参考,具体内容如下 1.工具类 直接用不用改 package com.example.demo.U...
    99+
    2022-11-12
  • java springmvc实现验证码功能
    本文实例为大家分享了springmvc实现验证码功能展示的具体代码,供大家参考,具体内容如下先看效果图: 思路: 首先验证码是一张图片,是一张有着随机字母、数字、图案等组成的图片,所以这图片肯定不是固定不变的,肯定是由后端随机制造出来的,前...
    99+
    2023-05-30
    java springmvc 验证码
  • Python如何实现生成验证码的功能
    这篇文章主要介绍“Python如何实现生成验证码的功能”,在日常操作中,相信很多人在Python如何实现生成验证码的功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python如何实现生成验证码的功能”的疑...
    99+
    2023-06-02
  • Java实现滑动验证码的示例代码
    目录1.效果演示2.后端代码控制层工具类3.前端页面功能:java实现滑动验证码 项目是采用springboot,maven 开发工具:采用idea 1.效果演示 2.后端代码...
    99+
    2022-11-13
  • Java实现短信验证码的示例代码
    目录项目需求需求来由代码实现发送验证码方法注册方法忘记密码前端代码编码中遇到的问题如何改进短信验证码相信大家都不陌生吗,但是短信验证码怎么生成的你真的了解吗,本文揭示本人项目中对短信...
    99+
    2022-11-13
  • Ajax实现邮箱验证实例代码
    html代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF...
    99+
    2022-11-13
  • Ajax+Struts2如何实现验证码验证功能
    这篇文章主要为大家展示了“Ajax+Struts2如何实现验证码验证功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Ajax+Struts2如何实现验证码验证...
    99+
    2022-10-19
  • Android绘制验证码的实例代码
    在前面仿华为加载动画、仿网易音乐听歌识曲-麦克风动画中,我们通过绘图的基础知识完成了简单的绘制。在本例中,我们将绘制常见的验证码。一、效果图二、知识点与思路分析通过上面的效果图观察,我们可以看到里面有绘制的随机线条,随机绘制的验证码。绘制线...
    99+
    2023-05-31
    android 验证码 roi
  • java随机验证码生成实现实例代码
    java随机验证码生成实现实例代码摘要: 在项目中有很多情况下都需要使用到随机验证码,这里提供一个java的随机验证码生成方案,可以指定难度,生成的验证码可以很方便的和其他组件搭配之前要使用一个生成随机验证码的功能,在网上找了一下,有很多的...
    99+
    2023-05-31
    java 随机 验证码
  • SpringBoot 集成Kaptcha实现验证码功能实例详解
    在一个web应用中验证码是一个常见的元素。不管是防止机器人还是爬虫都有一定的作用,我们是自己编写生产验证码的工具类,也可以使用一些比较方便的验证码工具。在网上收集一些资料之后,今天给大家介绍一下kaptcha的和springboot一起使用...
    99+
    2023-05-31
    spring boot kaptcha
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作