Django google recaptcha валидация в шаблоне без формы

Я хочу остановить мошенничество с кликами на моем сайте с помощью перенаправления пользователя на страницу recaptcha, но проблема в том, что я не могу поместить свой код проверки в views.py, потому что я возвращаю отображаемую страницу, поэтому как я могу получить ответ от captcha и затем проверить ответ.

robot_detection.py:

  def ref(result):

    if(result == True):                
        return escape(external_url)
    if(result == False): 
        return [False, external_url]   
    if(result == 0):
        return "product not found"

views.py:

@csrf_exempt
def robot(request, seller_id):
    seller = Seller(request)
    result = seller.ref(seller_id, request.GET.get('url', 0))
    response = JsonResponse({'result':result} ,safe=False ,  status=200)
    
    if len(result) > 1:
            if result[0] == False:
                response = render(request, 'captcha.html')
                response['Access-Control-Allow-Origin'] = '*'
                return response
    response = redirect(result)
    response['Access-Control-Allow-Origin'] = '*'
    return response

    

captcha.html

<!DOCTYPE html>

<html>

<head>
    <title>
        im not a robot
    </title>
    <meta name="viewport" content="initial-scale=1.0, width=device-width" />
    <meta charSet="utf-8" />
    <meta httpEquiv="content-language" content="fa" />
    <meta name="language" content="fa" />
    <meta httpEquiv="Content-Type" content="text/html;charset=UTF-8" />
</head>

<body>
    <div >
       
      
         <form method="post">
             {% csrf_token %}
             {{ form.as_p }}
             <script src="https://www.google.com/recaptcha/api.js?render=reCAPTCHA_site_key"></script>
             <div id='sub' class="g-recaptcha" data-sitekey=""  ></div>
        </form>
    </div> 
</body>

</html>

код проверки капчи:

recaptcha_response = request.POST.get('g-recaptcha-response')
url = 'https://www.google.com/recaptcha/api/siteverify'
values = {
'secret': "",
'response': recaptcha_response
}
data = urllib.parse.urlencode(values).encode()
req =  urllib.request.Request(url, data=data)
captcha_response = urllib.request.urlopen(req)
captcha_result = json.loads(captcha_response.read().decode())
if captcha_result['success']:
    response = redirect(result[1])
    response['Access-Control-Allow-Origin'] = '*'
    return response
else:
    print('None')

после успешной проверки я хочу перенаправить пользователя на external_url, который в данном случае является result[1].

enter image description here

любая помощь будет оценена по достоинству.

Вернуться на верх