首页>>后端>>Python->django怎么生成随机验证码?

django怎么生成随机验证码?

时间:2023-12-11 本站 点击:0

导读:很多朋友问到关于django怎么生成随机验证码的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!

仅需三步,为Django admin增加登录验证码功能

首先,需要安装一个验证码的第三方库-django-simple-captcha,这是一个极其简单但可高度定制的 Django 第三方应用程序,用于将验证码图像添加到任何 Django 表单。

在项目的urls.py中注册刚才子类化的站点地址

终端启动站点

浏览器打开站点可以看到验证码已经添加成功了,但似乎样式不美观,这个就留给大家自己去研究吧,给个思路可以拷贝captcha默认的验证码模板,样式重写即可!

实现点击更换验证码功能

将如下代码加入到login.html模板的底部即可,别忘了引入Jquery.js哦!

到此大功告成,很简单的验证码功能就完成了!

下篇预告 :django实现前后端分离登录功能,并加入验证码功能!

网页上的随机验证码是怎样做的。

给你写一段简单的4位数的数字验证码的代码:

思想:一个隐藏域保存产生的验证码,一个文本框保存用户输入的验证码,提交后进行对两个表单对象进行对比验证

一、产生验证

---获取验证代码---

Function

GetValidateCode()

Randomize

Timer

'产生一个随机树

GetValidateCode=Left(Int(Rnd*9998)+1000,4)

If

Len(GetValidateCode)4

Then

GetValidateCode=Len(GetValidateCode9999,4)

End

If

End

Function

'---

二、调用方法(下面这段代码放到表单里面):

%ValidateCode=GetValidateCode()'将获取的验证码赋值给ValidateCode%

input

type="hidden"

name="ValidateCode"

value="%=ValidateCode%"

input

type="text"

name="ValidateCodeInput"

value="%=ValidateCode%"

size="5"

maxlength="4"

class="input3"

%=ValidateCode%

django验证码用return render_to_response('bb.html',{'news':buf.getvalue()})不能正常显示图片!

render_to_response('bb.html',{'news':(buf.getvalue(),'image/gif')})

这一句呢有些问题。bb.html模板形式返回结果。如果我没有理解错的话,只能返回html格式,也许可以返回css,js。 但是原则上不能返回image格式。

另外你的bb.html里的内容是什么呢?是不是只有一句话呢?

如果是。可以这样。

r=render_to_response('bb.html',{'news':(buf.getvalue(),'image/gif')})

然后引用r,试图改写它的Content-Type为'image/gif'

也许可以成功。只是也许。

JSP实例:Java实现随机验证码功能实例

现在许多系统的注册 登录或者发布信息模块都添加的随机码功能 就是为了避免自动注册程序或者自动发布程序的使用

验证码实际上就是随机选择一些字符以图片的形式展现在页面上 如果进行提交操作的同时需要将图片上的字符同时提交 如果提交的字符与服务器session保存的不同 则认为提交信息无效 为了避免自动程序分析解析图片 通常会在图片上随机生成一些干扰线或者将字符进行扭曲 增加自动识别的难度

在这里 我们使用servlet来实现随机验证码的实现

package servlet; import java awt Color; import java awt Font; import java awt Graphics D; import java awt image BufferedImage; import java util Random; import javax imageio ImageIO; import javax servlet ServletException; import javax servlet ServletOutputStream; import javax servlet import javax servlet import javax servlet import javax servlet /** * 生成随机验证码 * @author bitiliu * */ public class ValidateCodeServlet extends HttpServlet { private static final long serialVersionUID = L; //验证码图片的宽度 private int width= ; //验证码图片的高度 private int height= ; //验证码字符个数 private int codeCount= ; private int x= ; //字体高度 private int fontHeight; private int codeY; char[] codeSequence = { 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 }; /** * 初始化验证图片属性 */ public void init() throws ServletException { //从web xml中获取初始信息 //宽度 String strWidth=this getInitParameter("width"); //高度 String strHeight=this getInitParameter("height"); //字符个数 String strCodeCount=this getInitParameter("codeCount"); //将配置的信息转换成数值 try { if(strWidth!=null strWidth length()!= ) { width=Integer parseInt(strWidth); } if(strHeight!=null strHeight length()!= ) { height=Integer parseInt(strHeight); } if(strCodeCount!=null strCodeCount length()!= ) { codeCount=Integer parseInt(strCodeCount); } } catch(NumberFormatException e) {} x=width/(codeCount+ ); fontHeight=height ; codeY=height ; } protected void service(HttpServletRequest req HttpServletResponse resp) throws ServletException java io IOException { //定义图像buffer BufferedImage buffImg = new BufferedImage( width height BufferedImage TYPE_INT_RGB); Graphics D g = buffImg createGraphics(); //创建一个随机数生成器类 Random random = new Random(); //将图像填充为白色 g setColor(Color WHITE); g fillRect( width height); //创建字体 字体的大小应该根据图片的高度来定 Font font = new Font("Fixedsys" Font PLAIN fontHeight); //设置字体 g setFont(font); //画边框 g setColor(Color BLACK); g drawRect( width height ); //随机产生 条干扰线 使图象中的认证码不易被其它程序探测到 g setColor(Color BLACK); for(int i = ; i ; i++) { int x = random nextInt(width); int y = random nextInt(height); int xl = random nextInt( ); int yl = random nextInt( ); g drawLine(x y x + xl y + yl); } //randomCode用于保存随机产生的验证码 以便用户登录后进行验证 StringBuffer randomCode = new StringBuffer(); int red = green = blue = ; //随机产生codeCount数字的验证码 for (int i = ; i codeCount; i++) { //得到随机产生的验证码数字 String strRand = String valueOf(codeSequence[random nextInt( )]); //产生随机的颜色分量来构造颜色值 这样输出的每位数字的颜色值都将不同 red = random nextInt( ); green = random nextInt( ); blue = random nextInt( ); //用随机产生的颜色将验证码绘制到图像中 g setColor(new Color(red green blue)); g drawString(strRand (i + ) * x codeY); //将产生的四个随机数组合在一起 randomCode append(strRand); } // 将四位数字的验证码保存到Session中 HttpSession session = req getSession(); session setAttribute("validateCode" randomCode toString()); // 禁止图像缓存 resp setHeader("Pragma" "no cache"); resp setHeader("Cache Control" "no cache"); resp setDateHeader("Expires" ); resp setContentType("image/jpeg"); //将图像输出到Servlet输出流中 ServletOutputStream sos = resp getOutputStream(); ImageIO write(buffImg "jpeg" sos); sos close(); } }

需要在web xml中声明servlet

servlet servlet nameValidateCodeServlet/servlet name servlet class servlet ValidateCodeServlet/servlet class init param param namewidth/param name param value /param value /init param init param param nameheight/param name param value /param value /init param init param param namecodeCount/param name param value /param value /init param /servlet servlet mapping servlet nameValidateCodeServlet/servlet name url pattern/validateCodeServlet/url pattern /servlet mapping

需要引用的页面可以这样来写

ccid_file values="validateCodeServlet" width= / /

lishixinzhi/Article/program/Java/JSP/201311/19913

服务端生成随机数并返回客户端 下次服务端如何验证随机数

服务端生成随机数并返回客户端,下次服务端如何验证随机数?直接输入验证。

开发随机验证模块时,首先需要一个显示随机数字验证码的界面,然后调用显示验证码的方法,最后将用户输入的验证码与实际生成的验证码进行比对,如果相同则通过验证,否则将不通过验证。

除了在用户登录页面中可以应用验证码之外,在论坛登录、用户注册和客户留言等页面中,也会应用到验证码,辅助用户完成登录网站或留言等一些相关的操作。

在设计完随机数字验证码的页面之后,就可以创建生成随机数字验证码的方法了。

Java Swing中随机验证码如何实现

根本思想是使用 随机数

具体实现:

1. 生成一个随机数

2. 将随机数使用全局变量保留

3. 将随机数设置成按钮的提示文字

4. 编写点击之后重新生成随机数,并且绑定到按钮上

5. 验证

如果需要实例,请留下邮箱!^_^

结语:以上就是首席CTO笔记为大家整理的关于django怎么生成随机验证码的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Python/25216.html