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

Валидатор validate_ipv4_address

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

Синтаксис

from django.core.validators import validate_ipv4_address from django import forms class MyForm(forms.Form): ip_address = forms.CharField( validators=[validate_ipv4_address] )

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

Пример . С формой

Рассмотрим пример использования валидатора в форме для ввода IP-адреса:

from django import forms from django.core.validators import validate_ipv4_address class ServerForm(forms.Form): name = forms.CharField(max_length=100) ip_address = forms.CharField( label='IP-адрес сервера', validators=[validate_ipv4_address], help_text='Введите корректный IPv4-адрес' ) port = forms.IntegerField(min_value=1, max_value=65535)

Проверка вручную

Валидатор можно использовать непосредственно в коде для проверки отдельных значений:

from django.core.validators import validate_ipv4_address from django.core.exceptions import ValidationError # Корректный адрес try: validate_ipv4_address('192.168.1.1') print("Адрес корректен") except ValidationError as e: print(f"Ошибка: {e.message}") # Некорректный адрес try: validate_ipv4_address('256.0.0.1') print("Адрес корректен") except ValidationError as e: print(f"Ошибка: {e.message}")

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

"Адрес корректен" "Ошибка: Enter a valid IPv4 address."

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

Покажем, как обрабатывать ошибки валидации в представлении:

from django.shortcuts import render from django.http import HttpResponse from .forms import ServerForm def add_server(request): if request.method == 'POST': form = ServerForm(request.POST) if form.is_valid(): ip = form.cleaned_data['ip_address'] return HttpResponse(f"Сервер добавлен с IP: {ip}") else: form = ServerForm() return render(request, 'add_server.html', {'form': form})

Особенности проверки

Валидатор validate_ipv4_address проверяет следующие условия:

from django.core.validators import validate_ipv4_address from django.core.exceptions import ValidationError # Проверка различных форматов адресов addresses = [ '192.168.0.1', # Корректный '10.0.0.0', # Корректный '0.0.0.0', # Корректный '255.255.255.255', # Корректный '192.168.1.256', # Некорректный (октет > 255) '192.168.1', # Некорректный (недостаточно октетов) '192.168.1.1.1', # Некорректный (слишком много октетов) 'abc.def.ghi.jkl', # Некорректный (не числа) ] for addr in addresses: try: validate_ipv4_address(addr) print(f"'{addr}' - корректный адрес") except ValidationError as e: print(f"'{addr}' - ошибка: {e.message}")

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

"'192.168.0.1' - корректный адрес" "'10.0.0.0' - корректный адрес" "'0.0.0.0' - корректный адрес" "'255.255.255.255' - корректный адрес" "'192.168.1.256' - ошибка: Enter a valid IPv4 address." "'192.168.1' - ошибка: Enter a valid IPv4 address." "'192.168.1.1.1' - ошибка: Enter a valid IPv4 address." "'abc.def.ghi.jkl' - ошибка: Enter a valid IPv4 address."

Интеграция с ModelForm

Валидатор можно использовать и в формах на основе моделей:

from django.db import models from django import forms from django.core.validators import validate_ipv4_address class Server(models.Model): name = models.CharField(max_length=100) ip_address = models.CharField(max_length=15) class ServerForm(forms.ModelForm): class Meta: model = Server fields = ['name', 'ip_address'] def clean_ip_address(self): ip = self.cleaned_data['ip_address'] validate_ipv4_address(ip) return ip

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

  • валидатор validate_ipv6_address,
    который проверяет корректность IPv6-адресов
  • валидатор validate_ipv46_address,
    который проверяет корректность IPv4 или IPv6-адресов
  • валидатор validate_domain_name,
    который проверяет корректность доменных имен
  • валидатор URLValidator,
    который проверяет корректность URL-адресов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить