Django—验证码

大部分博客网站是不会设置用户登录功能的,如果表单上再不添加验证码机制,那你就等着spammer疯狂的攻击吧。我曾经就吃过大亏:之前的一个网站平均每天几十条垃圾留言,删都来不及。后来在网上找到了一个优秀的屏蔽spam的插件——akismet,使用后果然效果不错,基本上垃圾信息都被屏蔽掉了,即在前台是看不到了,但问题是这些垃圾评论还是在源源不断地写入你的数据库表中,在管理后台里还是能看到它们的存在的。故为了眼不见心不烦,一劳永逸,还是决定给网站增加验证码机制,虽然以后提交表单繁琐了点,但网站总算落了个清净。

使用python或者说django的好处是什么?就是当你想实现某个功能时候,先去网上搜搜看,很多时候你会发现已经有人解决了这个问题,发布了相关的库。你拿来直接使用就OK了。搜索“django、验证码”,django-simple-captcha出现了,看了一下它的介绍,发现真的是一款相当好用的django第三方验证码库,随即就用在了我的这个博客网站上。下面把它的用法简单记录一下。

一、简介

  1. 项目地址:http://code.google.com/p/django-simple-captcha/
  2. 简介:是一个第三方django APP,用于为表单添加验证码图片

二、一般的使用方法

  1. 下载后python setup.py install进行安装
  2. 将下载包解压,将里面的captcha包复制到项目目录下,如myblog/captcha
  3. settings.py里添加:
    ?
    1
    INSTALLED_APPS(‘captcha’,)
  4. urls.py里添加:
    ?
    1
    (r’^captcha / ’, include(‘captcha.urls’)),
  5. 执行python manage.py syncdb生成所需数据库表
  6. 在需要用到captcha的forms.py文件里的合适位置添加下面的代码,增加验证码字段:
    ?
    1
    2
    3
    from   captcha.fields  import   CaptchaField
     
    captcha = CaptchaField()
  7. 在处理表单提交的业务逻辑代码块里添加:
    ?
    1
    2
    if   form.is_valid():
         human  =   True

三、与django的comments组件结合使用的方法

如果你的项目里的评论系统直接使用的django内置的comments库,则comments库与此验证码库结合使用的方法如下:

  1. 执行前面的1至5步
  2. 在 Python27\Lib\site-packages\django\contrib\comments\forms.py文件中(windows环境下的路径),在CommentDetailsForm类里面添加验证码字段:
    ?
    1
    2
    3
    from   captcha.fields  import   CaptchaField
     
    captcha =   CaptchaField()
  3. 在Python27\Lib\site-packages\django\contrib\comments\views\comments.py文件中,在# Otherwise create the comment这句下面添加:
    ?
    1
    human = True
  4. 修改表单模板:如果评论表单模板直接用的{{form}}则什么都不用修改;如果是自己定制的表单模板,则可添加如下:
    ?
    1
    2
    3
    < p >
    < label   for = "id_captcha" >验证(必填):</ label > {{form.captcha}}
    </ p >

这样就基本能够使用了,截取了一张效果图,大家来看看:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值