首页 > 解决方案 > 在 Django 中实现 recaptcha

问题描述

我正在尝试将 recaptcha 添加到我的评论表单中。我创建了一个帐户并拥有正确的密钥/公钥。我遇到的问题是,当我提交表单时,我的views.py 得到的响应为None 和无效输入响应。

正因为如此,我的评论没有被创建天气我点击“我不是机器人”。

这是在视图中验证 recaptcha 的逻辑

def create_review(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.RECAPTCHA_PRIVATE_KEY,
            'response': recaptcha_response
        }

        data = urllib.parse.urlencode(values).encode()
        req =  urllib.request.Request(url, data=data)
        response = urllib.request.urlopen(req)
        result = json.loads(response.read().decode())
        ''' End reCAPTCHA validation '''

        print(values)
        print(result)
        if result['success']:
            print(result['success'])
            name = request.POST.get('name')
            rating = request.POST.get('rating')
            message = request.POST.get('message')
            
            review = Testimonial(name=name, rating=rating, message=message)
            review.save()

这些是打印的变量

{'secret': 'private_key', 'response': None}
{'success': False, 'error-codes': ['invalid-input-response']}

这是我的 html 表单中的 html

<div class="g-recaptcha" data-sitekey="public_site_key"></div>

任何帮助表示赞赏。谢谢你。

标签: pythondjangorecaptcha

解决方案


推荐阅读