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 forms
from django.utils.safestring import mark_safe
from django.conf import settings
from 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 settings
from django import forms
from django.utils.encoding import smart_unicode
from django.utils.translation import ugettext_lazy as _
from recaptchawidget.widgets import ReCaptcha
from 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/
分享到:
相关推荐
在前端展示方面,由于Django Admin的默认模板可能无法直接显示验证码,我们需要修改`login.html`模板,将验证码字段添加到登录表单中。通常,这涉及到在HTML中插入`{{ form.captcha }}`,然后通过CSS或者JavaScript...
django-simple-captcha:一个简单、高度可定制的Django 应用,可以为任何Django表单添加验证码
【Django验证码应用详解】 Django是一个用Python编写的高级Web框架,它鼓励快速开发和清洁、实用的设计。在这个项目中,"我的Django编写项目,包含验证码",我们可以看到开发者在构建网站时考虑到了安全性,通过...
在Django项目中,添加图片验证码是为了增加安全性,防止恶意自动化的登录尝试。本文将详细介绍如何在Django项目登录过程中实现图片验证码的功能。 首先,我们需要创建一个`utils`目录,并在其中创建`validCode.py`...
在Django框架中,生成验证码是一项常见的需求,用于防止机器人或者恶意用户自动提交表单。验证码(CAPTCHA)全称为“Completely Automated Public Turing test to tell Computers and Humans Apart”,即全自动区分...
假设你有一个名为 `index.html` 的模板,你可以这样添加验证码图片: ```html ``` 同时,你还需要在前端 JavaScript 代码中获取 cookie 中的验证码密钥,用于验证用户输入的验证码。 最后,验证用户输入的验证码...
以上便是使用Django添加验证码功能的完整过程。文章虽然提供了清晰的步骤和代码示例,但实际操作时还需注意遵循Django的官方文档和验证码模块的具体指南,以确保最佳的实践和安全配置。通过这种方式,可以在很大程度...
这个登录注册模块可以直接与任何Django项目集成,只需将其添加到项目的`settings.py`文件的`INSTALLED_APPS`列表中,并在URL配置中设置相应的路由。模块的视图函数处理HTTP请求,并返回HTML响应。 7. **PyCharm ...
在Django框架中,为了增强网站安全性,通常会在用户登录时添加验证码功能,防止恶意自动化的机器人尝试登录。本文将详细介绍如何使用Django自定义插件实现这一功能。验证码是通过生成一张包含随机字符的图片,并要求...
在Python的Django框架中,实现验证码功能是网站安全的一个重要环节,它用于防止自动机器人或恶意用户进行非法操作。这篇文章将介绍如何在Django项目中创建一个自定义的验证码生成器,并展示其实例代码。 首先,我们...
Django Starter 基础框架这个项目是我为了满足公司安全部门的要求,定制了一个基于Django的Web框架, 功能包括:给DjangoAdmin加上验证码,并且加入登录次数尝试, 屏蔽了RestFramework默认的API主页,使外部访问...
**django_captcha: Django验证码库详解** `django_captcha`是一个专门为Django框架设计的验证码插件,旨在增强网站的安全性,防止恶意自动化脚本(如机器人)进行非法操作,如垃圾邮件提交、批量注册等。它通过提供...
基于python+django的登录网站验证码的生成与识别系统的实现.zip 用python实现登录网站验证码功能: 设计两种验证码: ...针对登录、验证码校验等重要功能,添加失败次数统计,以应对暴力破解的请求行为
在Python的Web开发框架Django中,集成Redis作为缓存或消息队列是常见的实践,而图片验证码(Captcha)则是防止恶意自动化操作的重要手段。接下来,我们将详细探讨如何在Django项目中设置Redis连接,并生成图片验证码...
然后,在 Django 的 `settings.py` 文件中进行相应的配置,包括设置电子邮件后端、添加应用到 `INSTALLED_APPS` 列表、配置模板路径等。 **三、集成过程** 1. **设置模型**:`django-allauth` 使用 Django 的内置 ...
修改Django源码来添加验证码字段,意味着我们需要在`AuthenticationForm`中处理验证码的输入和验证。 4. **签到功能**:签到功能需要记录用户的签到时间,并可能关联用户ID。Django模型可以创建一个新的模型来存储...
### Django验证码的生成与使用详解 #### 前言 在Web开发中,验证码是一种常见的安全措施,用于区分用户是人还是自动化程序。对于使用Django框架开发的应用来说,实现自定义的验证码功能是非常有用的。本文将详细...