Добавим файл equipments.py в папку validators
|~forms/ | |~mycontrollers/ | | |-__init__.py | | `-equipments.py | |~validators/ | | |-__init__.py | | `-equipments.py | `-__init__.pyНапишем валидатор IP адресов, вобще в WTForm есть класс wtforms.validators.IPAddress, но он работает только с IPv4 адресами.
import ipaddr from wtforms.validators import ValidationError class IPNetwork(object): """ Validates an IP(v4 and v6) address. :param message: Error message to raise in case of a validation error. """ def __init__(self, message=None): self.message = message def __call__(self, form, field): data = field.data # Use PEP3144 for validation if not ipaddr.IPNetwork(data) and data: self.message = field.gettext(u'Invalid IP address.') raise ValidationError(self.message)Сначала получаем значение поля, а потом при помощи модуля ipaddr проверяем. Если проверка не проходит то генерируем исключение ValidationError. Теперь напишем похожий валидатор для MAC адреса.
... from wtforms.validators import Regexp ... class MACAddress(Regexp): """ Validates an MAC address. :param message: Error message to raise in case of a validation error. """ def __init__(self, message=None): super(MACAddress, self).__init__(r'^([a-f\d]{1,2}\:){5}[a-f\d]{1,2}$',\ message=message) def __call__(self, form, field): if self.message is None: self.message = field.gettext(u'Invalid MAC address.') if field.data: super(MACAddress, self).__call__(form, field)Здесь мы использовали встроенный класс Regexp. В файле формы это используется так
... from myapp.forms.validators.mycontroller import IPNetwork, MACAddress ... class EditForm(Form): ip = TextField('IP address', [IPNetwork()]) mac = TextField('MAC address', [MACAddress()])
WTForm валидация |
Комментариев нет:
Отправить комментарий