. Он позволяет пользователю выбирать булевы значения (True/False) и настраивается через параметры attrs и check_test.">
РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
447 of 818 menu

CheckboxInput

Виджет CheckboxInput применяется для отображения поля формы в виде чекбокса. В отличие от BooleanField, который использует этот виджет по умолчанию, CheckboxInput можно использовать самостоятельно для более тонкой настройки внешнего вида чекбокса. Основные параметры виджета: attrs - словарь с HTML-атрибутами, и check_test - вызываемый объект, определяющий, должен ли чекбокс быть отмечен. Виджет рендерится в HTML-код с типом checkbox и может принимать значения из словаря choices.

Синтаксис

from django import forms # Базовое использование checkbox = forms.CheckboxInput(attrs=None, check_test=None)

Пример

Создадим форму с полем, использующим виджет CheckboxInput вместо стандартного BooleanField:

from django import forms class UserSettingsForm(forms.Form): notify_by_email = forms.BooleanField( required=False, widget=forms.CheckboxInput(attrs={'class': 'form-checkbox'}) ) accept_terms = forms.BooleanField( required=True, widget=forms.CheckboxInput(attrs={'id': 'terms-checkbox'}) )

Результат рендеринга формы в шаблоне:

<input type="checkbox" name="notify_by_email" class="form-checkbox"> <input type="checkbox" name="accept_terms" id="terms-checkbox">

Пример

Использование параметра check_test для динамического определения отмеченного состояния чекбокса:

from django import forms def is_premium(user): return user.is_authenticated and user.has_perm('premium_access') class SubscriptionForm(forms.Form): premium_mode = forms.BooleanField( required=False, widget=forms.CheckboxInput( attrs={'data-premium': 'true'}, check_test=is_premium ) )

При рендеринге виджет вызовет функцию is_premium для определения, должен ли чекбокс быть отмечен:

# Если check_test вернет True, чекбокс будет отмечен # <input type="checkbox" name="premium_mode" data-premium="true" checked> # Если check_test вернет False: # <input type="checkbox" name="premium_mode" data-premium="true">

Пример

Создание кастомного чекбокса с дополнительными атрибутами и обработкой значения:

from django import forms class NotificationForm(forms.Form): # Чекбокс с CSS-классом и обработчиком событий send_notifications = forms.BooleanField( initial=True, widget=forms.CheckboxInput( attrs={ 'class': 'toggle-switch', 'onchange': 'handleToggle(event)', 'data-toggle': 'notifications' } ) ) # Чекбокс с явным значением для отправки confirm_action = forms.BooleanField( required=True, widget=forms.CheckboxInput( attrs={'value': 'confirmed'} ) )

Результат рендеринга формы в HTML:

<input type="checkbox" name="send_notifications" class="toggle-switch" onchange="handleToggle(event)" data-toggle="notifications" checked> <input type="checkbox" name="confirm_action" value="confirmed">

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

  • виджет CheckboxSelectMultiple,
    который отображает несколько чекбоксов для выбора нескольких значений
  • виджет RadioSelect,
    который отображает радиокнопки для выбора одного варианта из списка
  • виджет NullBooleanSelect,
    который отображает выпадающий список для трех состояний: True, False и None
  • виджет HiddenInput,
    который создает скрытое поле для передачи данных без отображения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить