在Django中实现Recaptcha

时间:2020-08-05 19:54:15

标签: python django recaptcha

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

因此,我没有点击“我不是机器人”,无法创建我的评论。

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

Cart resultedCart;

CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Cart> query = criteriaBuilder.createQuery(Cart.class);
Root<Cart> cart = query.from(Cart.class);
Join<Cart, Customer> customer = cart.join("customer");
ParameterExpression<Long> idParameter = criteriaBuilder.parameter(Long.class);
       
query.select(cart).where(criteriaBuilder.equal(customer.get("id"), idParameter));
TypedQuery<Cart> typedQuery = entityManager.createQuery(query);

try {
     resultedCart = typedQuery.setParameter(idParameter, id).getSingleResult();
} catch (NoResultException noResultException) {
     throw new NoCartFoundException("The searched cart does not exist!", noResultException);
} finally {
     entityManager.close();
}

return resultedCart;

这些是打印的变量

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()

这是我的HTML表单中的HTML

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

感谢您的帮助。谢谢。

0 个答案:

没有答案