Django學習筆記—驗證碼

來源:互聯網
上載者:User

大部分部落格網站是不會設定使用者登入功能的,如果表單上再不添加驗證碼機制,那你就等著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檔案裡的合適位置添加下面的代碼,增加驗證碼欄位:?
    123 from
    captcha.fields
    import
    CaptchaField
     captcha=CaptchaField()
  7. 在處理表單提交的商務邏輯代碼塊裡添加:?
    12 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類裡面添加驗證碼欄位:?
    123 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}}則什麼都不用修改;如果是自己定製的表單範本,則可添加如下:?
    123 <p><label
    for="id_captcha">驗證(必填):</label> {{form.captcha}}</p>

這樣就基本能夠使用了,截取了一張,大家來看看:

文章來源:http://newliu.com/post/5/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.