html页面里

{#  验证码   #}
<div class="form-group " id="v-code-wrapper">
<label for="v_code_input">验证码</label>
<input type="text" class="form-control" id="v_code_input" name="v_code_input">
<img src="/get_v_code/" class="" id="v_code">
</div>

js里

{#当图片的src改变时,浏览器会自动访问该地址,所以此处点击验证码图片,触发事件改变src地址内容,用以改变验证码图片#}
$('#v_code').click(function () {
if (this.src == '/get_v_code/') {
this.src += '?';
} else {
this.src = '/get_v_code/';
}
});

views.py文件里

# 因为页面控制每次点击图片在连接后加? 或减去?,url一直都是这两个,Django会自动将这两个url的执行加入缓存,所以每次会获得一样的验证图片
# 该语法糖 告诉系统不要对该方法进行缓存操作
@never_cache
def get_v_code(request):
from PIL import Image, ImageDraw, ImageFont
import random # 定义生成一个随机颜色代码的内部函数
def get_color():
return random.randint(0, 255), random.randint(0, 255), random.randint(0, 255) # 生成一个图片对象
img_obj = Image.new(
'RGB', # 图片格式
(166, 37), # 图片大小
color=get_color()
) # 在图片中加文字 # 生成一个画笔对象
draw_obj = ImageDraw.Draw(img_obj) # 加载字体文件
font_obj = ImageFont.truetype('static/font/kumo.ttf', size=28) # 循环5次,每次往图片上写入一个随机字符
tmp_list = []
for i in range(5):
n = str(random.randint(0, 9))
l = chr(random.randint(97, 122))
u = chr(random.randint(65, 90)) r = random.choice([n, l, u])
tmp_list.append(r)
draw_obj.text(
(i * 30 + 10, 0), # 位置
r, # 内容
get_color(), # 颜色
font=font_obj,
)
# 得到随机验证码
v_code = ''.join(tmp_list) request.session['v_code'] = v_code.upper() # 第一种,将图片保存到文件(硬盘),然后再返回到页面
# with open('vv.png', 'wb')as f:
# img_obj.save(f, 'png')
# with open('vv.png', 'rb')as f:
# return HttpResponse(f.read(), content_type='imge/png') # 第二种,直接将图片放在内存中,返回回去
from io import BytesIO
tmp = BytesIO() # 生成一个IO对象
img_obj.save(tmp, 'png') data = tmp.getvalue()
return HttpResponse(data, content_type='imge/png')

7月2日 Django 生成验证码、的更多相关文章

  1. django生成验证码

    django生成验证码 # 制作验证码 def verify_code(): # 1,定义变量,用于画面的背景色.宽.高 # random.randrange(20, 100)意思是在20到100之间 ...

  2. Django 生成验证码或二维码 pillow模块

    一.安装PIL PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了.PIL功能非常强大,API也非常简单易用.   PIL模块只支持到Python 2 ...

  3. 6月22日 Django中ORM的F查询和Q查询、事务、QuerySet方法大全

    一.F查询和Q查询 F查询 在上面所有的例子中,我们构造的过滤器都只是将字段值与某个常量做比较.如果我们要对两个字段的值做比较,那该怎么做呢? Django 提供 F() 来做这样的比较.F() 的实 ...

  4. 6月28日 Django form组件 和 modelform组件

    Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...

  5. 6月25日 Django 分页 cookie、session

    cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...

  6. 6月21日 Django ORM那些相关操作(表关联、聚合查询和分组查询)

    一.ForeignKey操作 正向查找 对象查找(跨表) 语法: 对象.关联字段.字段   示例: book_obj = models.Book.objects.first() # 第一本书对象 pr ...

  7. 6月20日 Django中ORM介绍和字段、字段参数、相关操作

    一.Django中ORM介绍和字段及字段参数 二.Django ORM 常用字段和参数 三.Django ORM执行原生SQL.在Python脚本中调用Django环境.Django终端打印SQL语句 ...

  8. 7月3日 Django 头像预览、用户上传文件操作、logging、debug_tool_bar

    1. 注册功能 1. 头像预览 //头像预览 $('#id_avatar').change(function () { console.log(this.files[0]) //找到选中的头像文件 v ...

  9. 6月26日 Django 中间件

     前戏 我们在前面的课程中已经学会了给视图函数加装饰器来判断是用户是否登录,把没有登录的用户请求跳转到登录页面.我们通过给几个特定视图函数加装饰器实现了这个需求.但是以后添加的视图函数可能也需要加上装 ...

随机推荐

  1. 如何快速为团队打造自己的组件库(下)—— 基于 element-ui 为团队打造自己的组件库

    文章已收录到 github,欢迎 Watch 和 Star. 简介 在了解 Element 源码架构 的基础上,接下来我们基于 element-ui 为团队打造自己的组件库. 主题配置 基础组件库在 ...

  2. 《PHP程序员面试笔试宝典》——如何准备电话面试?

    本文摘自<PHP程序员面试笔试宝典>. PHP面试技巧分享,PHP面试题,PHP宝典尽在"琉忆编程库". 用人单位在收到简历之后,有时候由于求职者众多,而且很多求职者的 ...

  3. Solution -「CF 1391E」Pairs of Pairs

    \(\mathcal{Description}\)   Link.   给定一个 \(n\) 个点 \(m\) 条边的无向图,在其上找到一条包括不少于 \(\lceil\frac{n}2\rceil\ ...

  4. git忽略文件提交 .gitignore

    Git 忽略规则 详细的忽略规则可以参考官方英文文档 Git 忽略规则优先级 在 .gitingore 文件中,每一行指定一个忽略规则,Git 检查忽略规则的时候有多个来源,它的优先级如下(由高到低) ...

  5. Django整体模型理解(1)

    Django大概理解 *models:  设计一个模型,即在数据库中设计一个表,一个模型就是对应一个数据库中的表:models是一个类,类名就是表名,而类的属性就是表的字段.如下例子设计了两个表: f ...

  6. Linux mysql8.0.11安装

    准备:检查是否已安装过mysql,若有便删除(linux系统自带的) rpm -qa | grep mariadb rpm -e nodeps mariadb-libs-5.5.56-2.el7.x8 ...

  7. python-jsonpath模块

    前言 当遇到层级比较深的字典时,要想取值使用jsonpath取值比较方便,可以一下取到值, jsonPath用符号$表示最外层对象 基本语法 import jsonpath res=jsonpath. ...

  8. HTTP攻击与防范-跨站攻击-01简介

    实验目的 1.掌握WEB渗透测试跨站攻击原理 2.了解WEB站点的跨站攻击脆弱性 3.修复存在跨站攻击可能的漏洞 实验原理 XSS又叫CSS (Cross Site script) ,跨站脚本攻击.它 ...

  9. ASP.NET Core 6框架揭秘实例演示[12]:诊断跟踪的进阶用法

    一个好的程序员能够在系统出现问题之后马上定位错误的根源并找到正确的解决方案,一个更好的程序员能够根据当前的运行状态预知未来可能发生的问题,并将问题扼杀在摇篮中.诊断跟踪能够帮助我们有效地纠错和排错&l ...

  10. Zookeeper应用场景和ZAB协议

    Zookeeper应用场景 数据发布/订阅(配置中心) 我们平常的开发过程中,经常会碰到这样的需求:系统中需要一些通用的配置信息,如一些运行时的开关.前端需要展示的通知信息.数据库配置信息等等.这些需 ...