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

Поле GenericIPAddressField

Поле GenericIPAddressField в Django формах используется для приема и валидации IP-адресов. Оно поддерживает как IPv4, так и IPv6 форматы, предоставляя гибкую настройку протоколов. Поле автоматически проверяет корректность введенного адреса и преобразует его в строковый формат. При создании поля можно указать параметры protocol для ограничения протоколов и unpack_ipv4 для обработки IPv4-адресов в IPv6-формате.

Синтаксис

from django import forms field = forms.GenericIPAddressField( protocol='both', # 'both', 'IPv4', 'IPv6' unpack_ipv4=False, required=True, label='IP Address', initial='', help_text='Enter a valid IP address' )

Параметры

Основные параметры поля GenericIPAddressField:

  • protocol - определяет поддерживаемые протоколы: 'both' (по умолчанию), 'IPv4' или 'IPv6'
  • unpack_ipv4 - если установлен в True, преобразует IPv4-адреса из формата IPv6 ('::ffff:192.0.2.1') в обычный IPv4 ('192.0.2.1')
  • required - указывает, обязательно ли поле для заполнения
  • label - текст метки для поля
  • initial - начальное значение поля

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

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

from django import forms class ServerForm(forms.Form): server_ip = forms.GenericIPAddressField( protocol='both', label='Server IP Address', help_text='Enter IPv4 or IPv6 address' ) server_name = forms.CharField(max_length=100)

Пример . С ограничением протокола

Создадим форму, которая принимает только IPv6 адреса:

from django import forms class IPv6Form(forms.Form): ipv6_address = forms.GenericIPAddressField( protocol='IPv6', label='IPv6 Address', help_text='Enter a valid IPv6 address' )

Пример . С обработкой данных

Обработаем данные формы с IP-адресом:

from django import forms class NetworkForm(forms.Form): router_ip = forms.GenericIPAddressField( protocol='both', unpack_ipv4=True ) subnet_mask = forms.CharField(max_length=15) # Пример использования form_data = { 'router_ip': '::ffff:192.168.1.1', 'subnet_mask': '255.255.255.0' } form = NetworkForm(form_data) if form.is_valid(): router_ip = form.cleaned_data['router_ip'] print(router_ip)

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

"192.168.1.1"

Пример . С валидацией

Поле GenericIPAddressField автоматически проверяет корректность введенного адреса:

from django import forms class FirewallForm(forms.Form): source_ip = forms.GenericIPAddressField( protocol='both', label='Source IP' ) destination_ip = forms.GenericIPAddressField( protocol='both', label='Destination IP' ) # Пример с неверным адресом invalid_data = { 'source_ip': '256.256.256.256', 'destination_ip': '2001:db8::1' } form = FirewallForm(invalid_data) if not form.is_valid(): errors = form.errors print(errors)

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

{"source_ip": ["Enter a valid IPv4 or IPv6 address."]}

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

  • поле CharField,
    которое используется для текстовых строк
  • поле EmailField,
    которое валидирует email-адреса
  • поле URLField,
    которое валидирует URL-адреса
  • валидатор validate_ipv46_address,
    который используется для проверки IP-адресов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить