`
zlcjun
  • 浏览: 2440 次
社区版块
存档分类
最新评论

django1.4 自定义实现验证码

阅读更多

 

根据网上搜寻的,加上自己的理解,简单是实现了基于python2.7.5和django1.4的动态验证码

 

后台生成验证码的python代码写入views.py,

注意:导入PIL下的Image, ImageDraw, ImageFont,需安装PIL的插件,我使用的是PIL-1.1.7.win32-py2.7,附件中有

代码如下:

 

 #获取校验码,并返回给浏览器
def getCheckCodeImage(request):
	try:
		import Image
		import ImageDraw
		import ImageFont
	except ImportError:
		from PIL import Image, ImageDraw, ImageFont 
	#验证码的长度
	clength = 4
	#获取到验证码的值
	code_dict = initCheckCodeVal(clength)
	#取出列表类型的验证码值
	rand_list = code_dict['clist']
	#取出字符串类型的验证码值
	rand_str = code_dict['cstr']
	#设置字体,需设置的字体包simsun.ttc与python源码同级目录

	font = ImageFont.truetype('simsun.ttc',random.randint(18,25))
	#Image背景颜色
	bg_color = (255,255,255)
	#Image的长和宽
	i_width,i_height = clength*20,30
	#初始化Image对象
	im = Image.new('RGB',(i_width,i_height),bg_color)
	draw = ImageDraw.Draw(im)
	for i in range(0,clength):
		in_x = 10+i*10+random.randint(1,7)
		in_y = random.randint(2,15)
		draw.text((in_x,5), rand_list[i],font=font,fill=(0,0,0))
	#随机设置干扰线
	for i in range(0,3):
		linecolor = (random.randint(0,255),random.randint(0,255),random.randint(0,255))
		#都是随机的
		x1 = random.randint(0,10)
		x2 = random.randint(i_width-10,i_width)
		y1 = random.randint(5,i_height-5)
		y2 = random.randint(5,i_height-5)
		draw.line([(x1, y1), (x2, y2)], linecolor)
	del draw
	#将验证码转换成小写的,并保存到session中
	request.session['checkcode'] = rand_str.lower()
	buf = StringIO.StringIO()
	#将image信息保存到StringIO流中
	im.save(buf, 'gif')
	return HttpResponse(buf.getvalue(),'image/gif')
#获取验证码的值
def initCheckCodeVal(length=4):
	codes = ['0','2','3','4','5','6','7','8','9',
	'a','b','c','d','e','f','g','h','i','j',
	'k','m','n','o','p','q','r','s','t','u',
	'v','w','x','y','z','A','B','C','D','E',
	'F','G','H','I','J','K','L','M','N','O',
	'P','Q','R','S','T','U','V','W','X','Y',
	'Z']
	code_list = []
	code_str = ''

	for i in range(0,length):
		temp = codes[random.randint(0,59)]
		code_list.append(temp)
		code_str+=temp
	return {'clist':code_list,'cstr':code_str}

获取验证码url路径配置,urls.py

 

url(r'^msg/checkCodeImage/$', 'mysite.views.getCheckCodeImage',name='check code')

 网页上使用img标签加载图片

 

 

<img class="codeimg" onclick="this.setAttribute('src','/msg/checkCodeImage?nocache='+Math.random());" src="/msg/checkCodeImage"/>

 页面效果如下图:

 

 

本人初学python和django,如有错误地方望高手多多指点

 

 

 

 

  • 大小: 775 Bytes
分享到:
评论

相关推荐

    django1.4官方离线文档 html

    这个"django1.4官方离线文档 html"提供了完整的HTML格式的Django 1.4官方文档,方便开发者在无网络环境下查阅。 1. Django框架简介 Django是一个开源的、基于Python的Web框架,遵循“DRY(Don't Repeat Yourself)...

    门户网站制作django1.4

    【标题】:“门户网站制作django1.4” 在IT领域,门户制作是一项复杂而重要的任务,尤其是在使用Python的Django 1.4框架时。Django是著名的Web开发框架,以其MVC(Model-View-Controller)设计模式和“ Batteries ...

    Django 1.4 rc2

    3. **管理器的改进**:Django 1.4改进了模型的默认管理器,允许开发者更灵活地自定义管理器,同时保留默认行为。 4. **新模板语言**:Django 1.4引入了一个新的模板语言,它提供了更多的表达式和语法糖,使模板代码...

    django 1.4 文档(chm格式)

    网上的django chm文档比较老,这个是1.4版本的,而且是chm格式的

    Django-1.4官方文档(pdf)

    由于给出的信息较为片段化,我将基于提供的内容概述Django 1.4官方文档中涵盖的知识点,并尽可能地详细描述。 1. Django基础与官方文档: 文档为Django 1.4版本,由Django Software Foundation发布于2012年4月11日...

    Django-1.4.tar.gz

    通过解压"Django-1.4.tar.gz",我们可以得到Django 1.4的完整源代码,进一步研究其内部实现,学习如何利用这些特性来构建高性能的Web应用。无论你是初学者还是经验丰富的开发者,Django 1.4都提供了丰富的资源和强大...

    python django 1.4

    以上只是Django 1.4核心功能的一部分,实际使用时,你还可以探索更多高级特性,如模板继承、表单字段验证、分页、AJAX支持以及自定义用户模型等。不断学习和实践,你将能更好地掌握Django,开发出高效且健壮的Web...

    Django自定义插件实现网站登录验证码功能

    总结来说,Django自定义插件实现验证码功能涉及到的主要知识点有: 1. 使用Python的Pillow库生成验证码图片。 2. Django的视图函数处理用户请求,包括生成验证码、存储验证码、验证用户输入的验证码。 3. Django的...

    django 1.4

    标题:Django 1.4 描述:Django官方手册,涵盖了从入门到精通的全面指南,对于初学者和有经验的开发者都是极其宝贵的资源。 ### 关键知识点: #### 1. 获取帮助 - **常见问题解答(FAQ)**:官方文档提供了详尽的...

    Django template 自定义模板标签实现

    本文将深入探讨如何在Django中实现自定义模板标签。 首先,我们需要了解Django模板标签的两种类型:简单标签(Simple Tag)和过滤器标签(Filter)。简单标签在模板中以{% tag_name %}的形式使用,而过滤器标签则...

    对django xadmin自定义菜单的实例详解

    本文将详细介绍如何在Django Xadmin中实现自定义菜单,并附上具体的代码示例。 #### 一、自定义菜单的基本原理 在Django Xadmin中,可以通过重写`GlobalSetting`类中的方法来自定义菜单结构。具体来说,可以通过...

    (源码)基于Django框架的滑块验证码识别系统.zip

    通过自动化处理滑块验证码,实现了滑块验证码的自动识别和验证,为网站自动化测试和爬虫提供了便利。 ## 项目的主要特性和功能 自动化处理滑块验证码通过OpenCV库对滑块验证码进行边缘检测,识别直线,并根据特定...

    使用Django+MySQL实现的在线电影推荐系统源码.zip

    使用Django+MySQL实现的在线电影推荐系统源码 使用Django+MySQL实现的在线电影推荐系统源码 使用Django+MySQL实现的在线电影推荐系统源码 使用Django+MySQL实现的在线电影推荐系统源码 使用Django+MySQL实现...

    Django如何自定义分页

    在Django中,分页是实现大型Web应用中数据流管理的重要部分,它允许用户以较小的数据块浏览大量数据,而不是一次性加载所有内容。Django提供了内置的分页功能,但有时为了满足特定需求,我们需要自定义分页逻辑。本...

    Django实现的自定义访问日志模块示例

    ### Django 实现自定义访问日志模块详解 在 Web 开发中,日志记录是非常重要的一个环节,它能够帮助开发者追踪应用的行为、诊断问题并优化性能。Django 作为 Python 最流行的 Web 框架之一,虽然内置了一些日志功能...

    Django中自定义admin Xadmin的实现代码

    接下来,我们从三个部分来解析Django admin的实现流程,以帮助我们实现自定义admin——Xadmin。 第一部分是启动。在Django项目创建过程中,会自动创建一个与admin相关的url。Django启动后,会在manage.py文件中加载...

    基于python+django的登录网站验证码的生成与识别系统的实现.zip

    基于python+django的登录网站验证码的生成与识别系统的实现.zip 用python实现登录网站验证码功能: 设计两种验证码: 1 图形验证码,用python web框架Django能够实现动态刷新。 2 滑动验证码: 1.服务端随机生成小...

    Django后台自定义页面、权限设置

    最近工作开发主要利用Django搭建公司后台系统,在开发中遇到数据分页(django原生翻页),后台自定义页面、搜索功能(基于日期单搜索和日期项目名称多选项搜索)、数据显示(BootstrapTable翻页)、权限(控制表)等...

    django中的图片验证码功能源码

    django+python 图片验证码源码,直接使用

    Django自定义表单引擎Autoforms.zip

    Autoforms是Jeff开源的一个基于Django的自定义表单引擎,可用于调查、投票、信息收集甚至是整合至工作流程引擎和PAAS平台当中。 AutoForms的主要特性: 支持14种字段类型13种html输入控件(包括日期选择组件)...

Global site tag (gtag.js) - Google Analytics