Собственная проверка поля формы в Django

Данная заметка не открывает ни чего нового. Все, что здесь описано можно прочитать в документации к Django. Я лишь постараюсь привести готовый пример для валидации одного поля формы на два разных значения.

Например, нам необходимо получить от пользователя в качестве контакта «email» или «номер телефона». Пользователю требуется заполнить одно поле в форме, указав в нем одни из данных на выбор. Нам же необходимо проверить на серверной стороне что нам пришло и соответствует ли пришедшие данный требованиям.

В Django данное условие реализуется довольно легко с помощью создания собственного поля формы:

# -*- coding: utf-8 -*-
from django import forms
from django.core.validators import email_re
from django.utils.encoding import smart_unicode
from django.utils.translation import ugettext_lazy as _
import re
# Наше поле для валидации
class ContactField(forms.Field):
def validate(self, value):
super(ContactField, self).validate(value)
# Проверяем на соответствие поля "email"у
if email_re.search(smart_unicode(value)):
pass
# Проверяем на соответствие поля телефонному номеру
elif re.compile("^([0-9\(\)\/\+ \-]*)$").search(smart_unicode(value)):
pass
# Если не соответствует ничему, то вызываем ошибку
else:
raise forms.ValidationError(_(u'Enter a valid email or phone number.'), code='invalid')
class MessagesForm(forms.Form):
contact = ContactField(required=True)
view raw form.py hosted with ❤ by GitHub

Собственно и все. Люблю Django. С ней код получается кратким и локаничным.


Опубликовано

в

,

от

Метки:

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *