Съдържание
Когато дефинираме форма в Джанго Освен това ние му казваме какъв модел ще вземе и полетата, които трябва да показва, можем също да му кажем какво поведение и какъв тип HTML ще дефинира всяко поле, знаем, че например a CharField Тя трябва да ни покаже въвеждане на тип текст, но какво ще стане, ако искаме този тип въвеждане на текст вече да идва с клас, така че да има поведение от CSS или този елемент се заменя с друг елемент.За да постигнем това имаме джаджи и можем да ги дефинираме в момента на създаване на формулярен клас в нашето приложение.
HTML поведение
Както споменахме, Джанго показва полетата на формуляра в HTML код и за това, в зависимост от типа на дефинираното поле, HTML елементът ще бъде показан при генериране на формуляра, ако искаме допълнителни функционалности в нашите полета Джанго ни предлага джаджи за да можете да включите тези допълнителни функции.
Как се постига?Това се постига, защото всеки поле, дефинирано в Django във формуляр, има атрибут на джаджа и следователно в момента на създаването му можем да придадем стойност на споменатия атрибут и да го накараме да работи според начина, по който го искаме.
Персонализирани приспособления
Друг аспект, който можем да вземем предвид, е, че ако джаджи на ДжангоКакто при типовете полета, можем да ги персонализираме, така че да можем да постигнем специфични поведения, които отговарят на нашето приложение.
Например можем да създадем тип джаджа който е интегриран с a Javascript календар които сме разработили или които са специално изискани за нашата форма.
НаследяванеЗа персонализирана джаджа получи очакваните основни функционалности трябва да наследят от Django.forms.widgets.Widget това обаче не е задължително, след като бъде наследено от този клас, можем да заменим необходимите методи, за да получим нашата функционалност.
Практическо приложение
Нека видим по -долу пример, в който ще генерираме формуляр, използвайки джаджи За да дефинираме някои аспекти на полетата, ще направим това упражнение в интерактивната конзола на Python:
Виждаме в изображението тогава, че в конзолата сме дефинирали клас на формуляр и вътре сме поставили две полета, като по този начин избягваме създаването на екземпляри от модел, първото поле cod, което казваме, че е поле IntegerField, с това тя ще бъде валидирана само до числа към момента на подаване, но това, което ни интересува, е второто поле, това му казваме, че има приспособление и че е форми.ТекстераАко го разгледаме, дефинирахме го като CharField, това ни казва, че в HTML трябва да е въвеждане на текст, но с джаджа Променихме го, когато видим получения HTML, имаме, че е a HTML текстово поле.
Ако искаме дефинирайте поле с персонализирана джаджа Можем да обявим клас с входен тип и след това да го поставим във формуляра, нека видим този код, за да разберем:
клас PercentageInput (forms.TextInput): def render (self, name, value, attrs = None): връщане '% s %%'% super (PercentageInput, self) .render (име, стойност, attrs)
Тогава във формата, която го наричаме:
отстъпка = форми.IntegerField (джаджа = PercentageInput ())
Както виждаме, доста лесно е да се добавят нови видове джаджи към нашето приложение.Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка