下面我有一个注册表格。我在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.')
答案 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.')