Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 谷歌在django和angular的Recaptcha_Python_Angularjs_Django - Fatal编程技术网

Python 谷歌在django和angular的Recaptcha

Python 谷歌在django和angular的Recaptcha,python,angularjs,django,Python,Angularjs,Django,我在我的站点上安装了recaptcha(与django rest framework和angularjs一起工作),但我现在不知道如何获得g-recaptcha-response,任何人都可以展示这个示例 $scope.submit = function() { $http.get('https://www.google.com/recaptcha/api/siteverify').success(function (data) { $http.post

我在我的站点上安装了recaptcha(与django rest framework和angularjs一起工作),但我现在不知道如何获得g-recaptcha-response,任何人都可以展示这个示例

$scope.submit = function() {
         $http.get('https://www.google.com/recaptcha/api/siteverify').success(function (data) {
            $http.post(callbackUrl, $scope.callback).success(function (data) {
               $scope.isFormActive = false;
            }).error(function (data, status, headers, config) {
                alert('Incorrect');
            });

            }).error(function (data, status, headers, config) {
                alert('Incorrect');
            });

        };
我现在不知道如何设置参数密钥和响应
谢谢

您可以通过在javascript中调用“grecaptcha.getResponse()”来获得g-recaptcha-response
来源:

如果您正在使用Django REST framework(DRF),您可能需要签出以下包:

  • 前两个是实现一个DRF recaptcha序列化器字段,您可以将其放入序列化器中,它有自己的验证器来调用google verify URL。最后一个(
    django rest-captcha
    package)正在使用自己的验证器再次实现序列化程序。所有软件包都在pypi上,因此您可以使用pip安装它们

    前端集成依据:

    视图:

    网址:

    基本测试调用为:

    data = {"recaptcha": "token"}
    response = client.post("/my/api/endpoint/", data)
    assert response.status_code == 200
    
    from rest_framework import serializers
    from rest_framework_recaptcha.fields import ReCaptchaField
    
    
    class ReCaptchaSerializer(serializers.Serializer):
        recaptcha = ReCaptchaField()
    
    class VerifyTokenAPI(views.APIView):
        allowed_methods = ["POST"]
    
        def post(self, request, *args, **kwargs):
            serializer = ReCaptchaSerializer(data=request.data)
            if serializer.is_valid():
                return Response({'success': True}, status=status.HTTP_200_OK)
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
    
    urlpatterns = [
       ...
       path("/my/api/endpoint/", VerifyTokenAPI.as_view()),
    ]
    
    data = {"recaptcha": "token"}
    response = client.post("/my/api/endpoint/", data)
    assert response.status_code == 200