from wtforms import Form, TextField, validators
import wtforms_json
wtforms_json.init()
class NetworkForm(Form):
address = TextField('Address', [validators.IPAddress()])
gateway = TextField('Gateway')
netmask = TextField('Netmask')
network = dict(address = 123, gateway = u'gw', netmask = u'nm')
form = NetworkForm.from_json(network)
print 'form.validate()=', form.validate()
form.validate()=
Traceback (most recent call last):
File "test.py", line 15, in <module>
print 'form.validate()=', form.validate()
File "/usr/local/lib/python2.7/dist-packages/wtforms/form.py", line 265, in validate
return super(Form, self).validate(extra)
File "/usr/local/lib/python2.7/dist-packages/wtforms/form.py", line 130, in validate
if not field.validate(self, extra):
File "/usr/local/lib/python2.7/dist-packages/wtforms/fields/core.py", line 176, in validate
stop_validation = self._run_validation_chain(form, chain)
File "/usr/local/lib/python2.7/dist-packages/wtforms/fields/core.py", line 196, in _run_validation_chain
validator(form, self)
File "/usr/local/lib/python2.7/dist-packages/wtforms/validators.py", line 295, in __call__
valid = (self.ipv4 and self.check_ipv4(value)) or (self.ipv6 and self.check_ipv6(value))
File "/usr/local/lib/python2.7/dist-packages/wtforms/validators.py", line 303, in check_ipv4
parts = value.split('.')
AttributeError: 'int' object has no attribute 'split'
This seems to be a bug in the IPAddress validator, but I think more generally that WTForms is not ready to accept non-string values yet.