Índice
Quando definimos um formulário em Django Além disso, dizemos qual modelo ele vai usar e os campos que deve mostrar, também podemos dizer qual comportamento e qual tipo de HTML vai definir cada campo, sabemos que por exemplo um CharField Ele deve nos mostrar uma entrada de tipo de texto, mas e se quisermos que essa entrada de tipo de texto já venha com uma classe para que tenha um comportamento de CSS ou esse elemento é substituído por outro elemento.Para conseguir isso, temos o widgets e podemos defini-los no momento de criar a classe de formulário em nosso aplicativo.
Comportamento HTML
Como mencionamos, Django exibe campos de formulário em Código HTML e para isso, dependendo do tipo de campo definido, será o elemento HTML que será mostrado ao gerar o formulário, se quisermos funcionalidades adicionais em nossos campos Django nos oferece o widgets para ser capaz de incorporar essas funcionalidades extras.
Como isso é alcançado?Isso é realizado porque cada campo definido no Django em um formulário tem um atributo de widget e, portanto, no momento de instanciá-lo, podemos dar valor a esse atributo e fazê-lo funcionar da maneira que quisermos.
Widgets personalizados
Outro aspecto que podemos levar em consideração é que se o widgets do DjangoAssim como acontece com os tipos de campo, podemos personalizá-los, de modo que possamos alcançar comportamentos específicos que se ajustem à nossa aplicação.
Por exemplo, podemos criar um tipo de widget que está integrado com um Calendário Javascript que desenvolvemos ou que é especificamente solicitado para o nosso formulário.
HerançaPara widget customizado obter as funcionalidades básicas esperadas devem herdar de Django.forms.widgets.Widget no entanto, isso não é obrigatório, uma vez que é herdado desta classe, podemos substituir os métodos necessários para obter nossa funcionalidade.
Aplicação prática
Vamos ver abaixo um exemplo onde iremos gerar um formulário usando o widgets Para definir alguns aspectos dos campos, vamos fazer este exercício no console interativo do Pitão:
Se nós quisermos definir um campo com um widget personalizado Podemos declarar uma classe com um tipo de entrada e isso então colocá-la dentro do formulário, vamos ver este código para que possamos entender:
class PercentageInput (forms.TextInput): def render (self, name, value, attrs = None): return '% s %%'% super (PercentageInput, self) .render (name, value, attrs)
Então, na forma, nós o chamamos de:
desconto = forms.IntegerField (widget = PercentageInput ())
Como podemos ver, é muito fácil adicionar novos tipos de widgets ao nosso aplicativo.Gostou e ajudou este tutorial?Você pode recompensar o autor pressionando este botão para dar a ele um ponto positivo