У меня есть мастер форм, который проверяет, действительна ли Google Reaptcha. Если нет, в форме отображается сообщение о том, что оно недействительно, и, пожалуйста, повторите попытку. Проблема заключается в том, что форма забывает свои данные, когда это происходит, поэтому, если пользователь пытается отправить форму снова, вместо обычной отправки, форма возвращается к шагу 1, поскольку она не имеет всех данных. Есть идеи, как это исправить? Вот код:
def done(self, form_list, **kwargs):
recaptcha_response = self.request.POST.get('g-recaptcha-response')
url = 'https://www.google.com/recaptcha/api/siteverify'
values = {
'secret': settings.GOOGLE_RECAPTCHA_SECRET_KEY,
'response': recaptcha_response
}
captcha = urllib.parse.urlencode(values).encode()
req = urllib.request.Request(url, data=captcha)
response = urllib.request.urlopen(req)
result = json.loads(response.read().decode())
if result['success']:
*** success logic ***
else:
form = self.get_form(step=self.steps.current, data=self.request.POST, files=self.request.FILES)
messages.add_message(self.request, messages.ERROR, 'Invalid captcha. Please try again.')
return super(FormView, self).render(form, **kwargs)