Django - Widgets

Í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:

Vemos na imagem então que no console definimos uma classe de formulário e dentro colocamos dois campos, assim evitamos instanciar a partir de um modelo, o primeiro campo cod dizemos que é um campo IntegerField, com isso será validado apenas para números no momento do envio, mas o que nos interessa é o segundo campo, este dizemos a ele que possui um widget e que é um forms.TextareaSe olharmos para ele, o definimos como CharField, isso nos diz que no HTML deve ser uma entrada de texto, porém com o ferramenta Nós o mudamos, quando vemos o HTML resultante, temos que é um Área de texto HTML.
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
wave wave wave wave wave