Django recaptcha表单字段/小部件应用程序。
项目描述
Django reCAPTCHA
Django reCAPTCHA表单字段/小部件集成应用程序。
需求
测试与
Python: 3.7, 3.8, 3.9, 3.10
Django: 2.2, 3.2, 4.0
您可以在Python-Django支持矩阵中查看
安装
使用pip install django-recaptcha429安装。
将'captcha'添加到您的INSTALLED_APPS设置中。
INSTALLED_APPS = [ ..., 'captcha', ... ]
将步骤1中生成的Google reCAPTCHA密钥添加到您的Django生产设置中,使用RECAPTCHA_PUBLIC_KEY和RECAPTCHA_PRIVATE_KEY。请注意,省略这些设置将默认使用一组测试密钥,更多信息请参考本地开发和功能测试。
例如:
RECAPTCHA_PUBLIC_KEY = 'MyRecaptchaKey123' RECAPTCHA_PRIVATE_KEY = 'MyRecaptchaPrivateKey456'
这些也可以通过传递public_key或private_key参数到ReCaptchaField来针对每个字段进行指定 - 请参阅以下字段使用说明。
(可选)如果您需要代理,请添加一个RECAPTCHA_PROXY设置(代理字典),例如:
RECAPTCHA_PROXY = {'http': 'http://127.0.0.1:8000', 'https': 'https://127.0.0.1:8000'}
(可选)如果无法访问www.google.com,则可以将RECAPTCHA_DOMAIN设置更改为www.recaptcha.net,详情请参考reCAPTCHA FAQ
RECAPTCHA_DOMAIN = 'www.recaptcha.net'
这将更改Google JavaScript API域名以及客户端字段验证域名。
使用
字段
将reCAPTCHA添加到表单的最快方法是使用提供的ReCaptchaField字段类。默认情况下将渲染ReCaptchaV2Checkbox。例如:
from django import forms
from captcha.fields import ReCaptchaField
class FormWithCaptcha(forms.Form):
captcha = ReCaptchaField()
确保将验证码字段包含在您的表单中。在Django中向表单添加字段有多种方式。我们建议您参考表单渲染选项和手动渲染字段部分的官方Django文档。
要允许在运行时指定密钥,您可以选择将private_key或public_key参数传递给构造函数。例如:
captcha = ReCaptchaField(
public_key='76wtgdfsjhsydt7r5FFGFhgsdfytd656sad75fgh',
private_key='98dfg6df7g56df6gdfgdfg65JHJH656565GFGFGs',
)
如果指定,这些参数将用于代替您的reCAPTCHA项目设置。
小部件
可以使用三个小部件与ReCaptchaField类一起使用
ReCaptchaV2Checkbox用于Google reCAPTCHA V2 - Checkbox
ReCaptchaV2Invisible用于Google reCAPTCHA V2 - Invisible
ReCaptchaV3用于Google reCAPTCHA V3
要使用除了默认Google reCAPTCHA V2 - Checkbox小部件之外的其他小部件,只需替换ReCaptchaField小部件。例如:
from django import forms
from captcha.fields import ReCaptchaField
from captcha.widgets import ReCaptchaV2Invisible
class FormWithCaptcha(forms.Form):
captcha = ReCaptchaField(widget=ReCaptchaV2Invisible)
reCAPTCHA小部件支持多个数据属性,可以自定义小部件的行为,例如data-theme、data-size等。您可以通过传递一个包含选项字典的attrs参数到小部件中来传递这些选项。例如:
captcha = fields.ReCaptchaField(
widget=widgets.ReCaptchaV2Checkbox(
attrs={
'data-theme': 'dark',
'data-size': 'compact',
}
)
)
# The ReCaptchaV2Invisible widget
# ignores the "data-size" attribute in favor of 'data-size="invisible"'
reCAPTCHA API支持多个参数。要自定义发送的参数,请将一个包含选项字典的api_params参数传递给小部件。例如:
captcha = fields.ReCaptchaField(
widget=widgets.ReCaptchaV2Checkbox(
api_params={'hl': 'cl', 'onload': 'onLoadFunc'}
)
)
# The dictionary is urlencoded and appended to the reCAPTCHA api url.
默认情况下,提供的小部件仅支持每个页面上的单个表单和单个小部件。
可以通过设置‘h1’参数来设置语言,查看语言代码以获取语言代码选项。请注意,需要将翻译添加到此包中才能正确显示错误。目前该包为以下语言代码提供了错误翻译:es、fr、nl、pl、pt_BR、ru、zh_CN、zh_TW
但是,小部件使用的JavaScript可以在模板中轻松覆盖。
模板位于:
captcha/includes/js_v2_checkbox.html以覆盖reCAPTCHA V2 - Checkbox模板
captcha/includes/js_v2_invisible.html以覆盖reCAPTCHA V2 - Invisible模板
使用 captcha/includes/js_v3.html 覆盖 reCAPTCHA V3 模板
有关覆盖模板的更多信息,请参阅 Django 的模板覆盖
reCAPTCHA v3 分数
从版本 3 开始,reCAPTCHA 还会返回一个分数值。这可以用来确定页面交互是否为机器。有关详细信息,请参阅 Google 的 文档
要设置全局分数限制,请使用 RECAPTCHA_REQUIRED_SCORE 设置。
例如:
RECAPTCHA_REQUIRED_SCORE = 0.85
对于每个字段、运行时、规范属性,也可以将其传递给小部件
captcha = fields.ReCaptchaField( widget=ReCaptchaV3( attrs={ 'required_score':0.85, ... } ) )
如果分数不满足要求,字段验证将如预期失败,并将记录错误消息。
本地开发和功能测试
Google 提供了测试密钥,它们被设置为默认的 RECAPTCHA_PUBLIC_KEY 和 RECAPTCHA_PRIVATE_KEY。由于它们总是验证为 true,因此不能在生产环境中使用,且 reCAPTCHA 上将显示警告。
为了绕过防止测试密钥意外使用的安全检查,请将 SILENCED_SYSTEM_CHECKS = [..., 'captcha.recaptcha_test_key_error', ...] 添加到您的设置中,以下是一个示例
SILENCED_SYSTEM_CHECKS = ['captcha.recaptcha_test_key_error']
致谢
当前维护者是 Andrew Chen Wang
最初由 Praekelt Consulting 开发
灵感来自 Marco Fucci 的博客文章 Integrating reCAPTCHA with Django
client.py 来自 recaptcha-client,由 Mike Crawford 以 MIT/X11 许可
reCAPTCHA 版权 2012 Google。
变更日志
2.1.0
添加了对 Django 3.2 和 4.0 的测试
移除了对 Django 1.11 和 Python 2 的支持
移除了 Django 依赖项的上限约束
2.0.6
添加了对 Django 3 的测试(无需代码更改)。
2.0.5
添加了设置和 kwargs,允许验证 reCAPTCHA v3 分数值。
2.0.4
修复了 django 2.2 的 travis 测试
2.0.3
添加了对 Django 2.2 的测试(无需代码更改)。
2.0.2
将基于字段的 Google 开发者密钥检查移动到应用就绪注册的安全检查。
2.0.1
错误修正:从 widget_v3 模板中删除额外的 div
2.0.0
添加了 reCAPTCHA v3 支持。
删除了对 V1 reCAPTCHA 端点的所有提及。
重构了客户端、字段和小部件代码。
为每种类型的 reCAPTCHA 添加了小部件:V2 复选框、V2 无视、V3
无需根据某些设置值选择小部件模板,每个小部件都有自己的模板。
引入了大量新的单元测试,更新测试以利用 tox venvs。
重新生成 po 和 mo 文件。
1.5.0 (2019-01-09)
添加了对 Django 2.1 的测试(无需代码更改)。
更新单元测试,不再使用 reCAPTCHA v1。
为 reCAPTCHA v1 支持添加了弃用警告。
在单元测试期间无需使用 RECAPTCHA_TESTING 环境变量。
添加了对 Invisible reCAPTCHA V2 的支持。
1.4.0 (2018-02-08)
放弃了对 Django < 1.11 的支持。
添加了对 Django 2.0 的测试(无需代码更改)。
1.3.1 (2017-06-27)
修复了 Django < 1.10 的小部件属性回归问题。
1.3.0 (2017-04-10)
支持 Django 1.11,以及 1.8、1.9 和 1.10。
1.2.1 (2017-01-23)
将reCAPTCHA测试密钥设置为默认密钥,便于开发中使用。验证码不需要任何交互,有一个警告标签说明仅用于测试目的,并且始终验证。
1.2.0 (2016-12-19)
在默认模板中将选项作为HTML数据属性传递,而不是RecaptchaOptions JavaScript对象。使用RecaptchaOptions的自定义模板应迁移到使用HTML数据属性。
1.1.0 (2016-10-28)
停止支持旧版本的Django。现在只支持上游支持的版本,目前为1.8、1.9和1.10。
默认情况下,使recaptcha检查使用SSL。您可以通过在Django设置中设置RECAPTCHA_USE_SSL = False或传递use_ssl=False到ReCaptchaField构造函数来禁用此功能。
使ReCaptchaField尊重required=False
1.0.6 (2016-10-05)
已确认在Django 1.10上通过测试。旧版本应该仍然工作。
修复了由于attrs是一个可变默认参数而导致的小部件始终以第一个使用语言渲染的bug。
1.0.5 (2016-01-04)
中文翻译(kz26)。
语法修复(zvin)。
在Django 1.9上通过测试。
1.0.4 (2015-04-16)
修复了Python 3支持。
添加了波兰语翻译。
更新文档。
1.0.3 (2015-01-13)
添加了无验证码的reCAPTCHA支持。
1.0.2 (2014-09-16)
修复了俄语翻译。
添加了西班牙语翻译。
1.0.1 (2014-09-11)
添加了对Django 1.7的支持。
添加了俄语翻译。
添加了多依赖支持。
清理。
1.0 (2014-04-23)
添加了Python 3支持。
添加了法语、荷兰语和巴西葡萄牙语翻译。
0.0.9 (2014-02-14)
修复:发布master而不是develop。这应该可以解决由于master曾是GitHub上的默认分支而造成的混淆。
0.0.8 (2014-02-13)
修复:删除对options.html的引用。
0.0.7 (2014-02-12)
通过ajax加载小部件成为可能。
0.0.6 (2013-01-31)
添加了额外的参数lang以绕过Google的语言bug。请参阅http://code.google.com/p/recaptcha/issues/detail?id=133#c3
widget.html不再包含options.html。选项直接添加到widget.html中。
0.0.5 (2013-01-17)
删除了django-registration依赖。
将测试机制更改为环境变量RECAPTCHA_TESTING。
0.0.4
处理缺失的REMOTE_ADDR请求元键。感谢Joe Jasinski。
添加了对settings.DEBUG的检查,以方便测试。感谢Victor Neo。
修复了在没有javascript的情况下正确iframe URL的bug。感谢gerdemb。
0.0.3 (2011-09-20)
感谢kshileev,不强制注册版本。
使用模板渲染小部件,感谢denz。
0.0.2 (2011-08-10)
在验证时使用远程IP。
添加了SSL支持,感谢Brooks Travis。
添加了对JavaScript reCAPTCHA小部件选项的支持,感谢Brandon Taylor。
允许在运行时指定密钥和ssl,感谢Evgeny Fadeev。
0.0.1 (2010-06-17)
初始发布。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
哈希值 用于 django_recaptcha429-2.1.0-py2.py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | aa5fc5335e65f8861a5c42b3c0569a873cab89a7b3785bdfa7af14f2195dbcbe |
|
MD5 | 62150dd84d690500c8659f7ec2f809ab |
|
BLAKE2b-256 | 910405bccc29e6812f3a7ee3de6b6841bf4f7ebf1c47bb345a77e5bb12a440f9 |