大部分博客网站是不会设置用户登录功能的,如果表单上再不添加验证码机制,那你就等着spammer疯狂的攻击吧。我曾经就吃过大亏:之前的一个网站平均每天几十条垃圾留言,删都来不及。后来在网上找到了一个优秀的屏蔽spam的插件——akismet,使用后果然效果不错,基本上垃圾信息都被屏蔽掉了,即在前台是看不到了,但问题是这些垃圾评论还是在源源不断地写入你的数据库表中,在管理后台里还是能看到它们的存在的。故为了眼不见心不烦,一劳永逸,还是决定给网站增加验证码机制,虽然以后提交表单繁琐了点,但网站总算落了个清净。
使用python或者说django的好处是什么?就是当你想实现某个功能时候,先去网上搜搜看,很多时候你会发现已经有人解决了这个问题,发布了相关的库。你拿来直接使用就OK了。搜索“django、验证码”,django-simple-captcha出现了,看了一下它的介绍,发现真的是一款相当好用的django第三方验证码库,随即就用在了我的这个博客网站上。下面把它的用法简单记录一下。
一、简介
- 项目地址:http://code.google.com/p/django-simple-captcha/
- 简介:是一个第三方django APP,用于为表单添加验证码图片
二、一般的使用方法
- 下载后python setup.py install进行安装
- 将下载包解压,将里面的captcha包复制到项目目录下,如myblog/captcha
- settings.py里添加:
1
INSTALLED_APPS(‘captcha’,)
- urls.py里添加:
1
(r’^captcha
/
’, include(‘captcha.urls’)),
- 执行python manage.py syncdb生成所需数据库表
- 在需要用到captcha的forms.py文件里的合适位置添加下面的代码,增加验证码字段:
123
from
captcha.fields
import
CaptchaField
captcha
=
CaptchaField()
- 在处理表单提交的业务逻辑代码块里添加:
12
if
form.is_valid():
human
=
True
三、与django的comments组件结合使用的方法
如果你的项目里的评论系统直接使用的django内置的comments库,则comments库与此验证码库结合使用的方法如下:
- 执行前面的1至5步
- 在 Python27\Lib\site-packages\django\contrib\comments\forms.py文件中(windows环境下的路径),在CommentDetailsForm类里面添加验证码字段:
123
from
captcha.fields
import
CaptchaField
captcha
=
CaptchaField()
- 在Python27\Lib\site-packages\django\contrib\comments\views\comments.py文件中,在# Otherwise create the comment这句下面添加:
1
human
=
True
- 修改表单模板:如果评论表单模板直接用的{{form}}则什么都不用修改;如果是自己定制的表单模板,则可添加如下:
123
<
p
>
<
label
for
=
"id_captcha"
>验证(必填):</
label
> {{form.captcha}}
</
p
>
这样就基本能够使用了,截取了一张效果图,大家来看看: