РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
477 of 818 menu

Валидатор validate_ipv46_address

Валидатор validate_ipv46_address применяется для проверки того, что переданное значение представляет собой корректный IP-адрес четвертой или шестой версии. Он принимает строку и возбуждает исключение ValidationError, если адрес не соответствует ни одному из форматов. Валидатор автоматически определяет версию протокола и проверяет адрес на соответствие правилам записи для IPv4 или IPv6.

Синтаксис

from django.core.validators import validate_ipv46_address validate_ipv46_address(value)

Параметры

Валидатор validate_ipv46_address принимает один обязательный аргумент:

  • value - строка, содержащая IP-адрес для проверки.

Валидатор не имеет дополнительных параметров. В случае успешной проверки он ничего не возвращает, при ошибке возбуждает исключение ValidationError с соответствующим сообщением.

Пример . Использование в форме

Создадим форму с полем для ввода IP-адреса и применим валидатор validate_ipv46_address:

from django import forms from django.core.validators import validate_ipv46_address class IPForm(forms.Form): ip_address = forms.CharField( label="IP-адрес", validators=[validate_ipv46_address], max_length=45 )

Теперь проверим форму с корректным адресом:

from django.core.exceptions import ValidationError form = IPForm({"ip_address": "192.168.1.1"}) if form.is_valid(): print("Адрес корректен") else: print(form.errors)

Результат выполнения кода:

"Адрес корректен"

Пример . Обработка ошибки

Попробуем передать в форму некорректный адрес:

form = IPForm({"ip_address": "256.256.256.256"}) if form.is_valid(): print("Адрес корректен") else: print(form.errors["ip_address"])

Результат выполнения кода:

"Enter a valid IPv4 or IPv6 address."

Пример . С IPv6 адресом

Валидатор успешно проверяет и IPv6 адреса:

from django.core.validators import validate_ipv46_address from django.core.exceptions import ValidationError try: validate_ipv46_address("2001:0db8:85a3:0000:0000:8a2e:0370:7334") print("IPv6 адрес корректен") except ValidationError as e: print(e.message)

Результат выполнения кода:

"IPv6 адрес корректен"

Пример . Использование в модели

Валидатор можно также применять в модели Django:

from django.db import models from django.core.validators import validate_ipv46_address class Server(models.Model): name = models.CharField(max_length=100) ip_address = models.CharField( max_length=45, validators=[validate_ipv46_address], help_text="Введите IPv4 или IPv6 адрес" ) def __str__(self): return self.name

Попробуем сохранить объект с корректным адресом:

server = Server(name="Main Server", ip_address="10.0.0.1") server.full_clean() server.save() print("Сервер сохранен")

Результат выполнения кода:

"Сервер сохранен"

Смотрите также

  • валидатор validate_ipv4_address,
    который проверяет только IPv4 адреса
  • валидатор validate_ipv6_address,
    который проверяет только IPv6 адреса
  • поле GenericIPAddressField,
    которое использует этот валидатор по умолчанию
  • валидатор DomainNameValidator,
    который проверяет доменные имена
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить