首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

django增添验证码

2012-08-25 
django添加验证码1.安装recaptcha,命令:apt-get install ?python-recaptcha2.到https://www.google.com/re

django添加验证码

1.安装recaptcha,命令:apt-get install ?python-recaptcha

2.到https://www.google.com/recaptcha/admin/create去注册,获得public-key,private-key

3.在settings.py中添加:

RECAPTCHA_PUBLIC_KEY = '*public-key*'RECAPTCHA_PRIVATE_KEY = '*private-key*'

4.在项目根目录下新建recaptchawidget文件夹,?并新建__init__.py,fields.py,?widgets.py3个文件

5.编辑widgets.py:

from django import formsfrom django.utils.safestring import mark_safefrom django.conf import settingsfrom recaptcha.client import captcha    class ReCaptcha(forms.widgets.Widget):        recaptcha_challenge_name = 'recaptcha_challenge_field'        recaptcha_response_name = 'recaptcha_response_field'            def render(self, name, value, attrs=None):            return mark_safe(u'%s' % captcha.displayhtml(settings.RECAPTCHA_PUBLIC_KEY))            def value_from_datadict(self, data, files, name):            return [data.get(self.recaptcha_challenge_name, None),                 data.get(self.recaptcha_response_name, None)] 

?6.编辑fields.py:

from django.conf import settingsfrom django import formsfrom django.utils.encoding import smart_unicodefrom django.utils.translation import ugettext_lazy as _from recaptchawidget.widgets import ReCaptchafrom recaptcha.client import captcha    class ReCaptchaField(forms.CharField):        default_error_messages = {            'captcha_invalid': _(u'Invalid captcha')        }            def __init__(self, *args, **kwargs):            self.widget = ReCaptcha            self.required = True            super(ReCaptchaField, self).__init__(*args, **kwargs)            def clean(self, values):            super(ReCaptchaField, self).clean(values[1])            recaptcha_challenge_value = smart_unicode(values[0])            recaptcha_response_value = smart_unicode(values[1])            check_captcha = captcha.submit(recaptcha_challenge_value,                 recaptcha_response_value, settings.RECAPTCHA_PRIVATE_KEY, {})            if not check_captcha.is_valid:                raise forms.util.ValidationError(self.error_messages['captcha_invalid'])            return values[0] 
?

这样便可以在app中使用了,具体参考http://www.rkblog.rk.edu.pl/w/p/recaptach-django-forms/

热点排行