Django - Attributs et déclaration de classe

Table des matières
Django gère la manière déclarative de définir les classes qu'il utilisera, cela signifie que nous pouvons créer des modèles à partir de métaclasses déjà défini avec lequel nous pouvons obtenir des fonctionnalités de base et avancées simplement en créant une classe personnalisée, ceci grâce à tous les outils incorporés dans le cadre.
Un des points qui nous reste peut-être est de savoir comment savoir, comment le framework fait les choses, c'est-à-dire dans quel ordre il déclare les attributs que l'on place dans les classes.
Tri des attributs de classe
Lorsque nous utilisons la syntaxe déclarative dont nous disposons dans Django, un point de confusion peut survenir et c'est l'ordre dans lequel les valeurs déclarées sont attribuées, la raison en est que Python gère ses dictionnaires d'une manière désordonnée; Normalement cela ne représenterait pas un problème majeur, cependant, lors de la gestion des espaces de noms ou des espaces de noms si nous devons faire une itération particulière sur les attributs, il est important de connaître l'ordre dans lequel les valeurs ont été attribuées, car nous n'aurions pas de obstacle.
Pour avoir le plein contrôle de notre application, on peut en quelque sorte savoir quel est l'ordre dans lequel les valeurs sont attribuées, évitant ainsi d'avoir à attribuer un ordre arbitraire.
Pour réaliser cet ordre, ce que l'on peut faire c'est que chaque attribut porte par lui-même une trace de sa position dans la séquence, pour cela il faut faire hériter nos classes d'une classe de base qui peut compter combien de fois la classe est instanciée et ainsi assigner un nombre corrélatif à chacun d'eux :
 class BaseAttribute (objet): creation_counter = 1 def __init __ (self): self.creation_counter = BaseAttribute.creation_counter BaseAttribute.creation_counter + = 1 

Nous voyons ce qui suit dans l'exemple de code :
Chaque instance de Objet il a un espace de noms ou un espace de noms différent de celui des classes, donc chacune des instances de cette classe aura un compteur de création que nous pouvons utiliser pour trier les objets selon l'ordre dans lequel ils ont été instanciés.
Ce n'est peut-être pas la seule solution au problème posé, mais c'est la manière dont Django trie les champs pour les modèles et les formulaires.
Comme nous le voyons, le problème n'était qu'un exemple de la façon dont Django en tant que framework, il gère les classes et leur contenu, en utilisant les ressources Python.
Déclaration de classe
Avec toutes les classes que nous avons dans un module, créer une classe applicative est aussi simple que de définir une sous-classe et d'ajouter ses attributs.
Les différents frameworks existants auront des noms différents pour les attributs de la classe, et auront même des exigences différentes pour la façon dont les classes sont requises ou la forme et les combinaisons dans lesquelles elles doivent être appliquées, cela peut aller jusqu'à avoir des noms réservés qui pourraient provoquer des conflits si un attribut portant ce nom est créé. Ces problèmes sont rares car par bonne pratique nous devons éviter ce type de situation dans l'élaboration d'un nouveau cadre; la règle générale est de donner aux développeurs la plus grande flexibilité possible, avec cela nous réalisons que le framework n'est pas un obstacle au lieu d'une aide.
Dans l'image suivante, nous verrons comment la classe est déclarée Contact dans une application en Django :

AGRANDIR

Avec ce code simple, il nous suffit de permettre au framework de transmettre un grand nombre de fonctionnalités à notre modèle, sans avoir à obliger le développeur à les ajouter manuellement.
Une autre chose à retenir est qu'il s'agit de code Python, nous ne devrions donc pas nous sentir limités, car pratiquement tout code valide en Python nous aidera à étendre nos classes.Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave