这里讲讲在django中使用第三方插件验证码的流程。

一、 先安装pillow, 通过 python -m pip install pillow

二、安装完后,在官方网站上看操作过程。地址:pillow.readthedocs.io/en/

三、视图部分逻辑代码--

1、验证码部分 ( 注意:验证码要用全局变量来使得后期可以和输入的值进行验证)

def verifycode(request):
from PIL import Image, ImageDraw, ImageFont
import random #background
bgColor = (random.randrange(50,100),random.randrange(50,100),random.randrange(50,100)) #hight and length
width = 100
height = 25 #create a canvas
image = Image.new('RGB',(width,height),bgColor) #
#font = ImageFont.truetype('FreeMono.ttf',24)
#create a pen
draw = ImageDraw.Draw(image) #create a global empty string for verify code
global textTemp textTemp=''
#create char
for i in range(4):
textTemp1 = text[random.randrange(0, len(text))]
textTemp += textTemp1
draw.text((i*25,0) ,
#text[random.randrange(0,len(text))]
textTemp1 ,
(255,255,255),
)
request.session['code']=textTemp
#draw.text((0,0),text,(255,255,255)) #save
from io import BytesIO as StringIO
buf = StringIO()
image.save(buf,'png') #output to clinet return HttpResponse(buf.getvalue(),'image/png')

2、表格页面一的视图逻辑

def verifyTest1(request):
return render(request, 'booktest/verifyTest1.html')

3、验证输入的视图逻辑

def verifyTest2(request):
code = request.POST['code']
if( code == textTemp ):
return HttpResponse('You got it')
return HttpResponse('False')

四、创建模板

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<image src="/booktest/verifycode"></image><br>
<form action="verifyTest1" method="post">
{% csrf_token %}
<input type="text" name ="code1">
<input type="submit" name="submit">
</form>
</body>
</html>

#创建模板如果把 “form” 写成 “from” 就没法跳转了

五、创建url

  url(r'^verifycode/$', views.verifycode),
url(r'^verifyTest1/$', views.verifyTest1),
url(r'^verifyTest2/$', views.verifyTest2)

六、效果

当输入的验证码错误,会返回“false”。 正确则返回“You got it.”

django(一)验证码的更多相关文章

  1. django生成验证码

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

  2. Django之验证码 + session 认证

    验证码 + session认证 目录结构 . └── project ├── app01 │   ├── admin.py │   ├── apps.py │   ├── __init__.py │  ...

  3. python django 实现验证码的功能

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

  4. Django之验证码

    一.自己生成验证码 二.极验科技互动验证码 使用前步骤:下载官网文件——pip install geetest——引入其封装的js模块 代码分为三段:生成验证码——显示验证码——验证验证码. from ...

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

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

  6. Django Redis验证码 密码 session 实例

    1.settings CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCach ...

  7. django的验证码

    pip install Pillow==3.4.1在views.py中创建一个视图函数 from PIL import Image, ImageDraw, ImageFont from django. ...

  8. Django 之验证码实现

    1. django-simple-captcha 模块 安装 django-simple-captcha pip install django-simple-captcha pip install P ...

  9. Django中验证码的登录

    需求概述 一般登录页面或者其他页面都需要验证码的功能,那在Django中如何实现呢? 这基本就需要用到第三方模块了:pillow 还需要两个文件,一个是字体文件:Monaco.ttf,另一个是一个模块 ...

随机推荐

  1. java中线程安全和非线程安全的集合

    线程安全 非线程安全 Collection Vector ArrayList.LinkedList HashSet.TreeSet Map HashTable HashMap.TreeMap 字符串 ...

  2. python3实现感知器,简单神经网络

    三个输入,四个输出,四组数据 对numpy和矩阵运算还不是太熟悉,可能写的复杂了点,矩阵数组来回转换 代码请查看码云 运行结果片段

  3. 【 Gym - 101138J 】Valentina and the Gift Tree(树链剖分)

    BUPT2017 wintertraining(15) 4 D Gym - 101138J 数据 题意 n个节点的一棵树,每个节点的权值为g,q个询问,树上的节点U-V,求U到V的路径的最大子段和. ...

  4. 自学huawei之路-AC6005版本升级步骤

    返回自学Huawei之路 自学huawei之路-AC6005版本升级步骤 本文主要采用WEB网管界面升级,方便快捷,推荐使用此方法.     一.升级前检查 1.1 原AC/AP设备版本确认 disp ...

  5. 【BZOJ2142】礼物(拓展卢卡斯定理)

    [BZOJ2142]礼物(拓展卢卡斯定理) 题面 BZOJ 洛谷 题解 显然如果\(\sum w_i>n\)无解. 否则答案就是:\(\displaystyle \prod_{i=1}^m{n- ...

  6. suoi46 最大和和 (线段树)

    <Segment tree Beats!>,反正我不会 #include<bits/stdc++.h> #define pa pair<int,int> #defi ...

  7. luogu2542 航线规划 (树链剖分)

    不会lct,所以只能树剖乱搞 一般这种删边的题都是离线倒着做,变成加边 他要求的结果其实就是缩点以后两点间的距离. 然后先根据最后剩下的边随便做出一个生成树,然后假装把剩下的边当成加边操作以后处理 这 ...

  8. 在Android中afinal框架下實現sqlite數據庫版本升級的辦法

    public abstract void onUpgrade(SQLiteDatabase db,int oldVersion,int new Version) 這個方法在實現時需要重寫.   pub ...

  9. 论C++的发家史以及相对其他语言优缺

    C++发家史: 最初导致C++诞生的原因是在Bjarne博士等人试图去分析UNIX的内核的时候,这项工作开始于1979年4月,当时由于没有合适的工具能够有效的分析由于内核分布而造成的网络流量,以及怎样 ...

  10. 单机安装ELK

    . 简介 1.1 介绍 ELK是三个开源工具组成,简单解释如下: Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格 ...