“无效的密钥错误”验证码,我的views.py错误吗?

时间:2019-07-17 02:24:48

标签: django python-3.x django-views recaptcha

下面我有一个注册表格。我在python shell中没有错误,我尝试使用def signup(request)部分来执行此操作,但是我未定义“ request”。 我的密钥正确,我已经检查了。这对我来说很有意义,但是我对如何在views.py中正确传递此“请求”感到困惑。

class SignUp(generic.CreateView):
    form_class = forms.UserCreateForm
    success_url = reverse_lazy('login')
    template_name = 'signup.html'

    def signup(request):
        recaptcha_response = request.POST.get('g-recaptcha-response')
        data = {
            'secret': settings.GOOGLE_RECAPTCHA_SECRET_KEY,
            'response': recaptcha_response
        }

        r = requests.post('https://www.google.com/recaptcha/api/siteverify', data = data)
        result = r.json()

        if result['success']:
            form.save()
            messages.success(request, 'Success')

        else:
            messages.error(request, 'Invalid reCAPTCHA. Please try again.')

1 个答案:

答案 0 :(得分:0)

尝试使用session()json.loads()

class SignUp(generic.CreateView):
    form_class = forms.UserCreateForm
    success_url = reverse_lazy('login')
    template_name = 'signup.html'

    def signup(request):
        recaptcha_response = request.POST.get('g-recaptcha-response')
        data = {
            'secret': settings.GOOGLE_RECAPTCHA_SECRET_KEY,
            'response': recaptcha_response
        }

        s = requests.session()

        r = s.post('https://www.google.com/recaptcha/api/siteverify', 
                           data = data)
        result = json.loads(r.text)

        if result['success']:
            form.save()
            messages.success(request, 'Success')

        else:
            messages.error(request, 'Invalid reCAPTCHA. Please try again.')