大部分部落格網站是不會設定使用者登入功能的,如果表單上再不添加驗證碼機制,那你就等著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這句下面添加:?
- 修改表單範本:如果評論表單範本直接用的{{form}}則什麼都不用修改;如果是自己定製的表單範本,則可添加如下:?
| 123 |
<p><label
for="id_captcha">驗證(必填):</label> {{form.captcha}}</p> |
這樣就基本能夠使用了,截取了一張,大家來看看:
文章來源:http://newliu.com/post/5/