Table des matières
Lorsque nous définissons une forme dans Django A part ça on lui dit quel modèle il va prendre et les champs qu'il doit montrer, on peut aussi lui dire quel comportement et quel type de HTML va définir chaque champ, on sait que par exemple un CharField Cela devrait nous montrer une entrée de type texte, mais que se passe-t-il si nous voulons que cette entrée de type texte soit déjà fournie avec une classe afin qu'elle ait un comportement de CSS ou cet élément est remplacé par un autre élément.Pour y parvenir, nous avons le widgets et nous pouvons les définir au moment de créer la classe de formulaire dans notre application.
Comportement HTML
Comme nous l'avons mentionné, Django affiche les champs de formulaire dans Code HTML et pour cela, selon le type de champ défini, ce sera l'élément HTML qui sera affiché lors de la génération du formulaire, si on veut des fonctionnalités supplémentaires dans nos champs Django nous offre la widgets pour pouvoir intégrer ces fonctionnalités supplémentaires.
Comment est-il atteint ?Ceci est accompli parce que chaque le champ défini dans Django dans un formulaire a un attribut widget et donc au moment de l'instancier, nous pouvons donner de la valeur à cet attribut et le faire fonctionner selon la façon dont nous le voulons.
Widgets personnalisés
Un autre aspect que nous pouvons prendre en compte est que si le widgets de DjangoComme pour les types de champs, nous pouvons les personnaliser afin d'obtenir des comportements spécifiques adaptés à notre application.
Par exemple, nous pouvons créer un type de widget qui est intégré à un Calendrier Javascript que nous avons développé ou qui est spécifiquement demandé pour notre formulaire.
PatrimoinePour un widget personnalisé obtenir les fonctionnalités de base attendues devraient hériter de Django.forms.widgets.Widget cependant ce n'est pas obligatoire, une fois qu'il est hérité de cette classe, nous pouvons surcharger les méthodes nécessaires pour obtenir notre fonctionnalité.
Application pratique
Voyons ci-dessous un exemple où nous allons générer un formulaire en utilisant le widgets Pour définir certains aspects des champs, nous allons faire cet exercice dans la console interactive de Python:
Nous voyons dans l'image alors que dans la console nous avons défini une classe de formulaire et à l'intérieur nous avons placé deux champs, ainsi nous évitons d'instancier à partir d'un modèle, le premier champ cod nous disons qu'il s'agit d'un champ EntierChamp, avec cela il ne sera validé qu'à des chiffres au moment de la soumission, mais ce qui nous intéresse c'est le deuxième champ, celui-ci nous lui disons qu'il a un widget et que c'est un form.TextareaSi nous le regardons, nous l'avons défini comme un CharField, cela nous indique que dans le HTML, il devrait s'agir d'une entrée de texte, cependant avec le widget Nous l'avons changé, lorsque nous voyons le HTML résultant, nous avons que c'est un zone de texte HTML.
Si nous voulons définir un champ avec un widget personnalisé Nous pouvons déclarer une classe avec un type d'entrée et la placer ensuite dans le formulaire, voyons ce code pour que nous comprenions :
class PercentageInput (forms.TextInput): def render (self, name, value, attrs = None): return '% s %%'% super (PercentageInput, self) .render (name, value, attrs)
Ensuite, sous la forme que nous appelons :
remise = form.IntegerField (widget = PercentageInput ())
Comme on peut le voir, il est assez facile d'ajouter de nouveaux types de widgets à notre candidature.Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif