当前位置: 首页 > 知识库问答 >
问题:

如何在django中验证Google reCAPTCHA v2

艾焱
2023-03-14

我一直试图在一个我一直在做的网站上使用谷歌reCAPTCHA。验证码加载到网页上,但我无法使用几种方法验证它。我已经使用如何使用Python插件recaptcha客户端进行验证中给出的方法尝试了recaptcha验证?但我认为它已经过时了,因为它不再工作,它指的是挑战,而我试图使用的是谷歌新的“复选框”reCAPTCHA v2,或者我需要在安装recaptcha-client或django-recaptcha后更改设置。

请救命!

共有1个答案

拓拔弘厚
2023-03-14

下面是一个使用requests库(http://docs.python-requests.org/en/latest/)在Django视图中验证Google reCAPTCHA v2的简单示例:

import requests
from django.conf import settings

def get_client_ip(request):
    x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
    if x_forwarded_for:
        ip = x_forwarded_for.split(',')[0]
    else:
        ip = request.META.get('REMOTE_ADDR')
    return ip

def grecaptcha_verify(request):
    if request.method == 'POST':
        response = {}
        data = request.POST
        captcha_rs = data.get('g-recaptcha-response')
        url = "https://www.google.com/recaptcha/api/siteverify"
        params = {
            'secret': settings.RECAPTCHA_SECRET_KEY,
            'response': captcha_rs,
            'remoteip': get_client_ip(request)
        }
        verify_rs = requests.get(url, params=params, verify=True)
        verify_rs = verify_rs.json()
        response["status"] = verify_rs.get("success", False)
        response['message'] = verify_rs.get('error-codes', None) or "Unspecified error."
        return HttpResponse(response)
 类似资料:
  • 我目前使用phonenumbers包作为我的Django的UserCreationForm的电话号码字段的验证方法。在我当前的代码中,我使用get方法从其字段中检索电话号码,然后进行验证。如果输入的数字不存在,将弹出一个表单错误,并声明该数字不是一个国家的格式(在本例中,我使用的是新加坡)。请告诉我应该对我当前的代码做什么修改。 我希望输出验证phone字段中输入的电话号码,没有国家代码,只有8位

  • 问题内容: 假设我有一个模型,并且想验证是否 可以添加s个以上的代码: 但是,试图保存时, 一个 因为超过最大递归深度被抛出。 错误如下: 它发生在行中。 显然,在保存模型时,Django的复杂性根本不允许您验证m2m关系。那我该如何验证它们呢? 问题答案: 您 永远无法 使用模型的干净方法来验证关系。这是因为在清理时间,该模型可能不存在,就像您的购物篮一样。不存在的东西,也可能没有关系。 您要么

  • 问题内容: 我已在中注释掉了csrf处理器和中间件产品线 但是,当我使用Ajax发送请求时,Django仍然会响应“ csrf令牌不正确或丢失”,并且在将X-CSRFToken添加到标头后,请求将会成功。 这里发生了什么 ? 问题答案: 如果只需要一些视图而不使用CSRF,则可以使用@csrf_exempt:

  • 问题内容: 有没有办法在不使用PHP的情况下检查变量是否为有效的JSON字符串?我没有PHP 5.3.3。 问题答案:

  • 问题内容: 有没有可以验证CSS的库? 我可以找到的唯一工具是网站。如果这些站点之一具有API,那也很合适。 我有一个充当CSS编译器的脚本。它根据主题的设置设置各种变量,并生成和编写CSS文件。在致力于编写CSS文件之前,我想对其进行验证,以确保没有任何无效的条目。 PHP会很方便,但是Python,Perl,Ruby,Java或任何可从Shell执行的文件都可以。 理想情况下,我可以将某些东西

  • 问题内容: 我有一个PHP脚本,应该检查“有效”人名,但是最近破解了一个带有空格的名称,因此我们在验证器中添加了空格。 除了这样做,还有没有办法向CakePHP的验证器添加黑名单以阻止所有“无效”字符,而不是允许“有效”字符? 注意:我知道如何在PHP中执行此操作(通常),但是使用CakePHP的验证器语法是不同的。 问题答案: 我同意其他意见,即验证名称可能不是一个好主意。 对于您可以想到的几乎