Django DRF как проверить ответ капчи на стороне сервера

В качестве фронтенда я использую nextjs. Я пытаюсь проверить ответ капчи на сайте. Я хочу, чтобы данные не вставлялись в мою базу данных до тех пор, пока проверка captcha не завершится успешно. Я попробовал пакет drf-recaptcha. Вот мой код:

settings.py

INSTALLED_APPS = ['rest_framework_recaptcha',] #included in my installed app
DRF_RECAPTCHA_SECRET_KEY = '< my_secrect key>'

serializers.py

from rest_framework_recaptcha import ReCaptchaField

class ContactSerializer(serializers.ModelSerializer):
    recaptcha = ReCaptchaField()
    class Meta:
        model = Contact
        fields = '__all__'

my API views.py

@api_view(['POST', 'GET'])
def contact_forms_api(request):
    if request.method == 'POST':
        ''' Begin reCAPTCHA validation '''
        recaptcha_response = request.POST.get('g-recaptcha-response')
        url = 'https://www.google.com/recaptcha/api/siteverify'
        values = {
                'secret': settings.GOOGLE_RECAPTCHA_SECRET_KEY,
                'response': recaptcha_response
            }
        data = urllib.urlencode(values)
        req = urllib2.Request(url, data)
        response = urllib2.urlopen(req)
        result = json.load(response)
        ''' End reCAPTCHA validation '''
        if result['success']:
            data = request.data
            serializer = ContactSerializer(data=data)
            if serializer.is_valid():
                serializer.save()
                print(serializer.data)
                return Response({
                    'status': True,
                    'message': 'sucess'
                })

            return Response({
                'status': False,
                'message': serializer.errors

            })

вот мой код nexjs:

Я использую этот пакет в моем фронтенд приложении. здесь мой код выглядит так:

<form onSubmit={SubmitContact}>
<input type="text"/>
   <ReCAPTCHA
      sitekey="my_captcha site ke=y"
      onChange={handleRecaptcha}
             
    />
<form>

вот моя функция SubmitContact выглядит следующим образом:

  const res = await axios.post(url,data,{headers: headers}
            )
Вернуться на верх