如何在Django表单中加入Google reCAPTCHA
本教程解释了如何将Google的reCaptcha系统集成到你的Django网站。要在Django中创建一个表单,你可以查看 – 如何使用Django表单创建一个表单?
开始
将reCaptcha添加到任何HTML表单中包括以下步骤。
1.将你的网站域名注册到reCaptcha管理控制台。
2.在项目设置中添加重新验证码的密钥。
3.在HTML模板中添加reCaptcha脚本和输入元素。
4.在表单提交时,在后台向google reCaptcha API发出一个post请求,将表单的reCaptcha字段值和recaptcha密钥作为POST数据。
5.处理来自谷歌的回应。
虽然这可以手动完成,但我们将使用第三方库,因为它使这个过程更快、更简单。现在让我们做一个联系表的样本,在那里我们将整合reCaptcha
启动Django项目
确保你已经完成了django的安装。
- 创建一个新的django项目。
- 创建一个新的应用程序,如 “联系人”。
- 转到dj_recaptcha/settings.py添加联系人应用程序。
注册到谷歌reCAPTCHA管理控制台
首先你需要在reCaptcha管理控制台注册你的网站。在域名部分添加127.0.0.1,因为我们是在本地测试的。稍后,你可以添加你的生产URL。
Recaptcha管理控制台
你可以指定你想要的任何reCaptcha类型,在这里我们选择了v2版的 “I’m not a robot tickbox” 。你将在提交表格时获得API密钥。
重新验证码api密钥
将站点密钥和密匙复制到settings.py中,如下所示。
如前所述,我们将使用一个名为django-recaptcha的第三方库来使我们的过程更加简单。我们现在就用pip来安装它,输入以下命令。
在settings.py中把该应用添加到INSTALLED_APPS列表中。
现在让我们继续在forms.py中创建一个联系表单,将电子邮件、反馈和验证码作为字段。
验证码字段将被呈现为一个复选框字段。如果你在recaptcha管理控制台注册网站时指定了不同于v2复选框的类型,你需要改变上面ReCaptchaField的部件属性。如果你没有指定,ReCaptchaV2Checkbox将是默认的。 有三个部件可以与ReCaptchaField类一起使用。
ReCaptchaV2Checkbox for Google reCAPTCHA V2 – Checkbox
ReCaptchaV2Invisible for Google reCAPTCHA V2 – Invisible
ReCaptchaV3用于谷歌reCAPTCHA V3
做一个HTML模板,比如contact.html,来呈现这个表单。我们将使用{{ form.as_p }}的默认样式。如果你想手动设计Django表单,可以使用widget tweaks。
现在在views.py中创建一个视图来处理表单提交。
将视图映射到一个URL。在这里,我们要在主页上渲染表单,所以让我们为其添加URL映射。
我们基本完成了,让我们通过运行服务器并在浏览器中打开127.0.0.1:8000来测试它。
recaptcha demo