Django - Widget'lar

İçindekiler
Bir form tanımladığımızda Django Bunun dışında hangi modeli alacağını ve göstermesi gereken alanları da söyleriz, hangi davranışı ve ne tür bir davranış olduğunu da söyleyebiliriz. HTML her alanı tanımlayacak, biliyoruz ki örneğin bir Karakter Alanı Bize bir metin türü girişi göstermelidir, ancak bu metin türü girişinin zaten bir sınıfla gelmesini istiyorsak, CSS veya o eleman başka bir elemanla değiştirilir.
Bunu başarmak için elimizdeki widget'lar ve bunları uygulamamızda form sınıfını yaparken tanımlayabiliriz.
HTML davranışı
Bahsettiğimiz gibi, Django form alanlarını görüntüler HTML Kodu ve bunun için tanımlanan alan tipine bağlı olarak, alanlarımızda ek işlevler istiyorsak, form oluşturulurken görüntülenecek olan HTML öğesi olacaktır. Django bize sunuyor widget'lar bu ekstra işlevleri dahil edebilmek için.
Nasıl elde edilir?Bu başarılır çünkü her Django'da bir formda tanımlanan alan bir widget niteliğine sahiptir ve bu nedenle, somutlaştırma anında, söz konusu özniteliğe değer verebilir ve istediğimiz şekilde çalışmasını sağlayabiliriz.
Özel Widget'lar
Dikkate alabileceğimiz bir diğer husus ise, eğer widget'lar nın-nin DjangoAlan türlerinde olduğu gibi, uygulamamıza uyan belirli davranışlar elde edebilmemiz için bunları özelleştirebiliriz.
Örneğin bir oluşturabiliriz widget türü ile entegre olan bir JavaScript takvimi geliştirdiğimiz veya formumuz için özel olarak talep edilen.
Mirasiçin özel widget devralması gereken beklenen temel işlevleri al Django.forms.widgets.Widget ancak bu zorunlu değildir, bu sınıftan miras alındığında, işlevselliğimizi elde etmek için gerekli yöntemleri geçersiz kılabiliriz.
Pratik uygulama
kullanarak bir form oluşturacağımız bir örneği aşağıda görelim. widget'lar Alanların bazı yönlerini tanımlamak için, bu alıştırmayı interaktif konsolda yapacağız. piton:

Resimde görüyoruz ki konsolda bir form sınıfı tanımladık ve içine iki alan yerleştirdik, böylece bir modelden örnekleme yapmaktan kaçınıyoruz, ilk alan kodunun bir alan olduğunu söylüyoruz. Tamsayı Alanı, bununla birlikte, gönderme sırasında yalnızca sayılara doğrulanacak, ancak bizi ilgilendiren ikinci alan, bu ona bir widget'ı olduğunu ve bunun bir widget olduğunu söylüyoruz. formlar.TextareaOna bakarsak, onu bir CharField olarak tanımladık, bu bize HTML'de bunun bir metin girişi olması gerektiğini söyler, ancak Araç Bunu değiştirdik, sonuçta ortaya çıkan HTML'yi gördüğümüzde bunun bir HTML metin alanı.
Eğer istersek özel bir widget ile bir alan tanımlayın Bir girdi tipi ile bir sınıf tanımlayabiliriz ve bunu formun içine yerleştirebiliriz, anlayabilmemiz için şu kodu görelim:
 sınıf PercentageInput (forms.TextInput): tanım oluşturma (kendi, ad, değer, özler = Yok): '% s %%'% super (PercentageInput, öz) .render (ad, değer, öznitelikler) döndür 

Sonra formda diyoruz:
indirim = formlar.IntegerField (widget = PercentageInput ())

Gördüğümüz gibi, yeni türler eklemek oldukça kolaydır. widget'lar uygulamamıza.Bu Eğitimi beğendiniz ve yardım ettiniz mi?Yazara olumlu puan vermek için bu düğmeye basarak yazarı ödüllendirebilirsiniz.
wave wave wave wave wave