import random
from PIL import Image, ImageDraw, ImageFontdef v_code(request):def random_color():return random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)
#     创建一个随机颜色的图片对象img_obj =Image.new('RGB',(250,30),random_color())
#     实例化一个画笔对象pen_obj =ImageDraw.Draw(img_obj)
#     加载字体对象font_obj =ImageFont.truetype('static/font/kumo.ttf',28)tmp = []for i in range(5):l = chr(random.randint(97, 122))  # 生成随机的小写字母u = chr(random.randint(65, 90))  # 生成随机的大写字母n = str(random.randint(0, 9))  # 生成一个随机的数字# 从上面三个随机选一个r = random.choice([l, u, n])pen_obj.text((40*i+30,0),r,fill=random_color(),font=font_obj)tmp.append(r)# # 加干扰线# width = 250  # 图片宽度(防止越界)# height = 35# for i in range(5):#     x1 = random.randint(0, width)#     x2 = random.randint(0, width)#     y1 = random.randint(0, height)#     y2 = random.randint(0, height)#     pen_obj.line((x1, y1, x2, y2), fill=random_color())## # 加干扰点# for i in range(40):#     draw_obj.point([random.randint(0, width), random.randint(0, height)], fill=random_color())#     x = random.randint(0, width)#     y = random.randint(0, height)#     pen_obj.arc((x, y, x+4, y+4), 0, 90, fill=random_color())v_code=''.join(tmp).upper()request.session['v_code']= v_code# with open("static/imgs/vcode.png", "wb") as f1:#     img_obj.save(f1, format="PNG")## with open("static/images/vcode.png", "rb") as f:#     img_data = f.read()# 直接在内存中保存图片替代io操作from  io import BytesIOf1 =BytesIO()img_obj.save(f1, format="PNG")img_data = f1.getvalue()return HttpResponse(img_data, content_type="image/png")

  在视图函数中定义此方法,在路由中添加次视图函数的调用

    url(r'^v_code/', views.v_code,name='v_code'),

在模板中添加登录控件

<div class="login-center clearfix"><div class="login-center-img"><img src="{% static 'imgs/password.png' %}"></div><div class="login-center-input"><input type="text" name="v_code" value="" placeholder="请输入验证码" οnfοcus="this.placeholder=''"οnblur="this.placeholder='请输入您的验证码'"><div class="login-center-input-text">验证码</div></div></div>

添加验证码的更换

<script>img = document.getElementById('v_code');img.onclick = function () {img.src += '?'}
</script>

  

最重要的一点:此路由不能通过中间件的检验,因此,将此路由添加至白名单

最后完成django的登录验证码功能的添加

  

转载于:https://www.cnblogs.com/wszxdzd/p/9917977.html

django登录验证码操作相关推荐

  1. Django登录验证码实现

    登录验证码实现 只实现验证码功能,没有样式.后续验证码替换可改为ajax请求,实现局部刷新. 路由代码: from django.contrib import admin from django.ur ...

  2. Django前后端分离实现登录验证码功能

    Django前后端分离实现登录验证码功能 当下最流行最热门的开发方式当属前后端分离开发,分工也更加明确与专注,前端也是越来越难,几天不学习就跟不上节奏,一个月不学习可以好不夸张的说,你已经不适合这个行 ...

  3. django admin 验证码点击刷新

    django admin 验证码点击刷新 很多场景需要验证码功能,比如登录.我们可以直接使用django的第三方库 django-simple-captcha 模块来实现验证码功能,但是如果需要刷新验 ...

  4. Python学习---Django的基础操作180116

    Django创建数据库操作 django流程之model实例 settigs.py:更改Django2.0.1的配置,更新为之前的路径配置 'DIRS': [os.path.join(BASE_DIR ...

  5. Django之验证码的实现,简单快捷的方法

    Django之验证码的实现,简单快捷的方法 实现验证码随网页变动即时刷新,实现有期限时间 请确保安装好pillow 直接show code: 0.路由urs.py from django.urls i ...

  6. [Django ]Django 的数据库操作

    Django 的数据库操作 有之前的基础,那么我们就可以开始对数据库进行操作. 一.数据库配置 配置 MySql 在主目录的 settings.py 中修改 Python 1 2 3 4 5 6 7 ...

  7. 关于小程序区服登录账号换模拟器登录的操作

    关于小程序区服登录账号换模拟器登录的操作 游戏内已经绑定手机号了,有一个任务是绑定手机的. 打开模拟器里我是大东家,选择忘记密码,填绑定手机号验证短信,然后输入新密码. 然后就可以用手机号+密码在模拟 ...

  8. 爬虫三(Bs4搜索、Selenium基本使用、无界面浏览器、Selenium自动登录百度案例、自动获取12306登录验证码案例、切换选项卡、浏览器前进后退、登录Cnblogs获取Cookie自动点赞)

    文章标题 一.Bs4搜索文档树 二.CSS选择器 三.selenium基本使用 四.无界面浏览器 五.selenium其他使用 1)自动登录百度案例 2)获取位置属性大小.文本 3)自动获取12306 ...

  9. 爬虫日记-模拟登录cookie操作

    模拟登录cookie操作 我们之前已经实现了模拟人人网登录,那么我们接下来是不是可以直接用requests模块获取登录成功的界面的内容? 于是我们就那这个url做了请求. 结果访问到的html依然是登 ...

  10. Django中间件实现操作日志记录

    Django中间件实现操作日志 本文通过Django中间件的流程,实现操作日志记录的功能,模块化.拿来即用. 功能描述:通过中间件记录 请求时间.操作用户.请求URL.请求方法.请求IP.请求参数和响 ...

最新文章

  1. Vim----ma6174
  2. 数据蒋堂 | 人工智能中的“人工”
  3. Spring集成spymemcached
  4. 举两个栗子:如何正确建立个人的机器学习项目集
  5. IdentityServer4 使用OpenID Connect添加用户身份验证
  6. DL之Panoptic Segmentation:Panoptic Segmentation(全景分割)的简介(论文介绍)、全景分割挑战简介、案例应用等配图集合之详细攻略
  7. [Leetcode总结] 102.二叉树的层序遍历
  8. python vbs库_Python语言之requests库
  9. 开放源代码_您是否在开放源代码中看到了这些个性?
  10. SQLServer · 特性分析 · SQL Server 2012的分析函数未必都理解透了(2)
  11. OBJECT_ID(Transact-Sql)
  12. 难以置信:某国产平台制定打包deb规范,竟然没有测试
  13. php李炎恢笔记,李炎恢PHP笔记2
  14. Word小技巧:图片批量裁剪与大小调整
  15. MySQL-运维工具 pt-archiver数据归档工具
  16. php 微信登录手机网站,微信PC端登录和手机端登录逻辑分享
  17. 关于c++16进制字符串与ASCII字符串的相互转换
  18. 内存管理Memorynbsp;OC——第九天
  19. NY891 区间选点 找点
  20. 纯前端实现xls表格下载

热门文章

  1. nginx学习笔记01
  2. 操作系统 第二部分 进程管理(二)
  3. 操作系统 第二部分 进程管理(五)
  4. 深度学习中的Precision和Recall,AP,mAP
  5. yolo v4模型训练过程(超详细)
  6. Python数据分析之pandas常用命令整理!
  7. 人脸预处理工具FaceTools
  8. 列车运行图的编制原则是什么_列车运行图编制规则
  9. 西华师范大学计算机专业保研资格,西华师范大学计算机学院 计算机应用技术保研条件...
  10. python des加密文件_python基于pyDes库实现des加密的方法