Джанго - Виджеты

{title}

Когда мы определяем форму в Django, помимо которой мы сообщаем ей, какую модель она будет принимать и какие поля она должна показывать, мы также можем указать, какое поведение и какой тип HTML будет определять каждое поле, мы знаем, что, например, CharField должен показывать нам входные данные. введите текст, но что, если мы хотим, чтобы ввод текста был уже с классом, чтобы он имел поведение CSS или этот элемент был заменен другим элементом.
Для этого у нас есть виджеты, и мы можем определить их при создании класса формы в нашем приложении.
Поведение HTML
Как мы уже упоминали, Django показывает поля формы в коде HTML, и для этого, в зависимости от типа определенного поля, это будет элемент HTML, который будет отображаться во время создания формы, если мы хотим, чтобы дополнительные функции в наших полях Django предлагали нам виджеты, чтобы иметь возможность включать Эти дополнительные функции.
Как это достигается?

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

Чтобы пользовательский виджет получил ожидаемые базовые функции, он должен наследоваться от Django.forms.widgets.Widget, однако это не является обязательным, поскольку он наследуется от этого класса, мы можем переписать необходимые методы для получения нашей функциональности.
Практическое применение
Давайте рассмотрим пример ниже, где мы собираемся сгенерировать форму, используя виджеты для определения некоторых аспектов полей, это упражнение будет выполнено в интерактивной консоли Python :

{title}


Затем мы видим на изображении, что в консоли мы определили класс формы, и внутри мы поместили два поля, поэтому мы избегаем создания экземпляров из модели, первое поле cod говорит нам, что это поле IntegerField, с ним оно будет проверено только на числа в данный момент о представлении, но нас интересует второе поле, мы говорим, что у него есть виджет и что это формы. Текст, если мы смотрим на него, мы определили его как CharField, это означает, что в HTML это должен быть текст ввода однако с помощью виджета мы изменили его, когда мы видим результирующий HTML, который мы имеем, что это текстовая область HTML .
Если мы хотим определить поле с помощью пользовательского виджета, мы можем объявить класс с типом ввода и затем поместить его в форму, давайте посмотрим этот код, чтобы мы поняли:
 Класс PercentageInput (forms.TextInput): def render (self, name, value, attrs = None): вернуть '% s %%'% super (PercentageInput, self) .render (имя, значение, attrs) 

Тогда в форме мы называем это:
 discount = forms.IntegerField (widget = PercentageInput ()) 

Как мы могли видеть, добавить новые типы виджетов в наше приложение довольно просто.

  • 0

СТАТЬЯ ПО ТЕМЕ Как войти в безопасный режим Windows 7

..

В этом руководстве мы узнаем, как получить доступ к безопасному режиму Windows 7.