Для того, чтобы сделать простой captacha, как поле, я попробовал следующее:Джанго переменная экземпляра поля формы
class CaptchaField(IntegerField):
def __init__(self, *args, **kwargs):
super(CaptchaField, self).__init__(*args, **kwargs)
self.reset()
def reset(self):
self.int_1 = random.randint(1, 10)
self.int_2 = random.randint(1, 10)
self.label = '{0} + {1}'.format(self.int_1, self.int_2)
def clean(self, value):
value = super(CaptchaField, self).clean(value)
if value != self.int_1 + self.int_2:
self.reset()
raise ValidationError(_("Enter the result"), code='captcha_fail')
return True
Каждый раз, когда мой ответ неверен, метка изменяется, как ожидалось, но испытание проводится против первые значения int_1 и int_2, а не для новых случайно генерируемых значений. Я не понимаю, как создается объект Field и почему я не могу получить доступ к значениям моего поля.
Заранее спасибо
FYI Google reCAPTCHA хорошо работает с django. – jarmod