为了制作一个简单的类似验证码的字段,我尝试了以下方法:
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 对象是如何创建的,以及为什么我无法访问我的字段的值。
提前致谢