Съдържание
Говорейки за джаджи, трябва да знаем, че това са мост между HTML код и полетата на Джанго; Те имат много общо с начина, по който ще контролираме поведението на HTML във нашите форми и следователно в нашето приложение.Такъв е контролът, че можем да приложим някои техники за програмиране, при които ще си позволим да съхраняваме и обработваме данни на различни джаджи и ги дайте на Джанго сякаш това са данни от един източник.
Разделяне на данни между множество приспособления
Действието на това може да се постигне с помощта на метод render () от джаджа, тогава можем да имаме поле и когато го обработваме, го разделяме на няколко HTML входа, всеки от които съдържа част от стойността, която трябва да съхраняваме.
ПримерПример може да бъде полето Време за среща, това може да бъде разделено на поле, което улавя само датата, и друго, което улавя часа, но когато се съхранява в База данни Трябва да се присъединим към тях и по този начин имаме пълно поле, но в потребителската част то е разделено.
MultiWidget
Като пример, който посочихме по -рано, това е нещо доста досадно, тъй като ще трябва да се погрижим да напишем твърде много рутини и методи, които ни помагат при валидирането, в Джанго Това вече е обмислено и имаме помощни програми, които вършат голяма част от тази работа за нас.
MultiValueFieldОтстрани на нивите имаме MultiValueField което ни помага при валидирането на данните, тяхното почистване и сравнението спрямо всяко от полетата, които съставят съединението; Единственото нещо, което трябва да направим тук, е да посочим кои са полетата, които ще направят композицията и как трябва да ги компресираме, така че да могат да се използват в кода Python.
Този метод е създаден да работи заедно с MultiWidget който ще отговаря за превеждането на HTML всичко, което сме дефинирали преди това в класа form.
Нека видим по -долу изображение на примерен код, където сме реализирали тези концепции:
Увеличете
Тук виждаме как за първи път сме дефинирали клас, който наследява на MultiWidget, в него посочваме, че ще имаме две полета InputText сътрудници и създават a метод decompress () който е този, който ще раздели стойностите за представяне.В следващия клас задаваме малко повече елементи, първо му казваме, че трябва да наследи от MultiValueField тогава ние посочваме това джаджа трябва да използвате и разбира се ще ви кажем да използвате вече дефинираната джаджа.
След това в неговия метод __init__ Посочваме типовете полета, които ще заема и накрая дефинираме метода компресиране (), виждаме, че освен азът получава и параметър data_list, в това ще предадем списъка с данни, които трябва да бъдат комбинирани и ще ги върнем като кортеж, ние също се възползваме от валидирането им, за да избегнем получаването на погрешни данни, които биха могли да застрашат нашето приложение.
С това завършваме този урок, виждайки как имаме доста усъвършенстван инструмент, който ни позволява да персонализираме нашите формуляри малко повече в нашето приложение само с прости стъпки.Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка