Applications Django : tout ce que vous devez savoir sur 2022

Publié: 2021-01-04

Django est l'un des meilleurs frameworks python construits par des professionnels qui encourage une conception pragmatique et un développement rapide pour les développeurs Web. C'est rapide, sécurisé et l'un des favoris des développeurs Web. Django a un registre des applications déjà installées qui stocke la configuration et aide à fournir une introspection. Il maintient une liste complète des modèles disponibles. Le registre s'appelle apps. Les applications Django sont disponibles dans 'django.apps'

>>> depuis django.apps importer des applications

>>> apps.get_app_config('admin').verbose_name

'Administration'

Table des matières

Projets Django

Toutes les applications Django peuvent être qualifiées de projet. Il est défini par un module de paramétrage. Cependant, il contient également plusieurs autres choses. Par exemple, si vous exécutez django-admin startproject mysite, vous obtiendrez un répertoire de projet mysite. Celui-ci contiendra un package Python mysite avec setting.py, urls.py, asgi.py et wsgi.py. Le package peut souvent être étendu afin d'inclure CSS, fixture et d'autres modèles non associés à une application spécifique.

Le répertoire racine du projet ou celui qui a manage.py contient généralement toutes les applications du projet qui ne sont pas installées séparément.

Applications Django

Application désigne un package de Python qui possède certaines fonctionnalités. Il peut être réutilisé dans plusieurs projets. Les applications peuvent être des combinaisons de vues, de modèles, d'URL de modèles, de fichiers statiques, etc. Elles sont souvent câblées dans des projets avec le paramètre INSTALLED-APPS . Il peut souvent être câblé avec d'autres mécanismes optionnels comme URLconfs qui est le paramètre MIDDLEWARE .

Lire : Salaire du développeur Django en Inde

L'application Django est un jeu de codes qui crée des interactions avec plusieurs parties d'un framework spécifique. Il n'a pas d'objet Application. Parfois, Django peut avoir besoin d'interagir avec certaines applications pour l'introspection ou la configuration. Par conséquent, il existe des métadonnées dans AppConfig pour les applications installées. Un package de projet peut également être considéré comme une application et il peut également avoir des modèles.

Configuration des applications Django

Si vous souhaitez configurer une application, vous devez sous- classer AppConfig , puis ajouter une ligne pointillée à celle-ci dans INSTALLED_Apps. Lorsqu'il obtient la ligne pointillée, Django commence à vérifier la variable default_app_config . Une fois défini, il devient la sous-classe AppConfig pour cette application spécifique. Si aucune default_app_config n'est définie, Django utilisera la classe AppConfig de base .

Lisez également : Différence entre la pile complète et la pile moyenne

Pour les auteurs d'applications Django

Supposons que vous développiez une application enfichable "Rock 'n' roll". Ensuite, vous pouvez développer un nom de la manière suivante :

# rock_n_roll/apps.py

depuis django.apps importer AppConfig

classe RockNRollConfig(AppConfig) :

nom = 'rock_n_roll'

verbose_name = "Rock'n'roll"

Vous pourrez également le charger en tant que sous-classe AppConfig en utilisant :

# rock_n_roll/__init__.py

default_app_config = 'rock_n_roll.apps.RockNRollConfig'

Ainsi, RockNRollConfig peut être utilisé lorsque 'rock_n_roll' est présent dans les applications installées. Cela vous aidera à utiliser les fonctionnalités d'AppConfig sans que les utilisateurs aient à effectuer la mise à jour dans INSTALLED_APPS.

Pour les utilisateurs de l'application

Disons que vous utilisez l'application Rock 'n' roll dans un projet appelé anthologie. Maintenant, vous voulez qu'il apparaisse comme Jazz Manouche avant cela. Ainsi, vous pouvez suivre ces étapes :

# anthologie/apps.py

depuis rock_n_roll.apps importer RockNRollConfig

classe JazzManoucheConfig(RockNRolConfig) :

verbose_name = "Jazz Manouche"

# anthologie/settings.py

INSTALLED_APPS = [

'anthology.apps.JazzManoucheConfig',

# …

]

classe AppConfig

Les métadonnées d'une application sont stockées dans des objets de configuration d'application. Certains de ces attributs sont configurés dans les sous-classes AppConfig et ils sont définis en lecture seule ou par Django.

Attributs configurables

AppConfig.name

Chemin : django.contrib.admin

Il aide à définir l'application dans laquelle la configuration est appliquée. Il est défini dans les sous-classes AppConfig. Unique dans un projet Django.

AppConfig.étiquette

Nom : administrateur

Aide à réétiqueter une application, surtout si deux d'entre elles ont des étiquettes contradictoires. Il devient le dernier composant d'un nom par défaut. Doit être un identifiant Python valide. Unique dans les projets Django.

AppConfig.verbose_name

Nom : Administration

Par défaut : label.title()

AppConfig.path

Exemple de répertoire d'application : '/usr/lib/pythonX.Y/dist-packages/django/contrib/admin'

Dans de nombreux cas, Django peut le détecter et le définir automatiquement, mais vous pouvez remplacer l'attribut de classe explicitement via la sous-classe AppConfig.

Attributs en lecture seule

AppConfig.module

Exemple de module racine : <module 'django.contrib.admin' de 'django/contrib/admin/__init__.py'>

AppConfig.models_module

Module avec exemple de modèles : <module 'django.contrib.admin.models' de 'django/contrib/admin/models.py'>

Il peut également être Aucun s'il ne contient pas de modèles.

Méthodes

AppConfig.get_models()

Cela aidera à renvoyer une classe Model itérable pour l'application. Il faudra que le registre de l'application soit complètement rempli.

AppConfig.get_model

Renvoie le modèle spécifique sans respect de la casse : nom_modèle. Nom du modèle

Cela aide à lever une LookupError si aucun modèle spécifique n'existe. Il faudra que le registre de l'application soit complètement rempli.

AppConfig.prêt()

Il peut être utile de remplacer la méthode et, par conséquent, d'effectuer des tâches d'initialisation telles que l'enregistrement de signaux. Peut être appelé une fois que le registre est complètement rempli. Cependant, vous ne pouvez pas importer de modèles au niveau du module où les classes d'AppConfig sont définies. Vous pouvez cependant les importer dans ready(), qui utilise get_model() ou l'instruction import.

Packages d'espace de noms utilisés comme applications

Lorsqu'un package Python n'a pas __init__.py, ils sont appelés packages d'espace de noms. Ils peuvent être répartis sur plusieurs répertoires et emplacements sur sys.path. L'application Django aura besoin d'un système de fichiers de base de signes dans lequel Django, basé sur la configuration, recherchera des actifs statiques, des modèles, etc. Par conséquent, l'application Django ne peut être utilisée que si l'un de ces éléments est vrai :

  • Le package d'espace de noms a un seul emplacement.
  • La classe AppConfig qui est utilisée pour configurer l'application a un attribut de classe de chemin.

Si aucune des conditions n'est remplie, alors Django affichera ImproperlyConfigured.

Registre des applications Django

Certaines API publiques sont fournies par le registre des applications. Voici quelques-unes des méthodes, bien qu'elles puissent changer :

apps.ready

Lorsque l'attribut booléen est défini sur True et que le registre est complètement rempli et que toutes les méthodes AppConfig.ready() sont donc appelées.

apps.get_app_configs()

Il renverra un itérable d'instances AppConfig.

apps.get_app_config(app_label)

Il renverra un AppConfig pour l'application qui a un app_label donné. Si aucune application n'existe, elle déclenchera une LookupError.

apps.is_installed( Il vérifiera si un nom existe pour l'application donnée dans le registre actuel. app_name va être un nom complet d'application, exemple : django.contrib.admin

apps.get_model( Il renverra le modèle avec le model_name et l'app_label donnés. Si aucune application n'existe, elle déclenchera une LookupError.

Processus d'initialisation

Donc, maintenant, la question est de savoir comment charger les applications Django. Lorsque Django est lancé, django.setup() remplira le registre.

configuration( set_prefix=True )

Les configurations Django se produisent :

  • Par premier chargement des paramètres
  • Configuration de la connexion
  • Si set_prefix est vrai, alors le préfixe du script revolver d'URL devient FORCE_SCRIPT_NAME s'il est défini ou non.
  • Le registre des applications est initialisé.

L'appel automatique de la fonction se produit :

  • Lorsque le serveur HTTP s'exécute via un support WSGI de Django
  • Lorsque la commande de gestion est invoquée.

Dépanner

Certains problèmes courants auxquels on pourrait être confronté sont :

  • AppRegistryNotReady : se produit lors de l'importation d'un code de déclenchement de module de configuration ou de modèles d'application qui ne dépend pas du registre d'application. Si vous exécutez des requêtes de base de données avec ORM, ce problème peut se produire.
  • ImportError : impossible d'importer le nom … - Cela se produit lorsque les séquences d'importation se terminent par une boucle. Vous pouvez éliminer le processus en minimisant les dépendances entre les modules de modèles.
  • Django.contrib.admin provoque la découverte automatique des modules d'administration. Remplacez INSTALLED_APPS de django.contrib.admin par django.contrib.admin.apps.SimpleAdminConfig pour l'empêcher.

J'espère que vous pouvez désormais intégrer facilement les applications Django dans votre développement Web.

Obtenez un cours de développement de logiciels dans les meilleures universités du monde. Gagnez des programmes Executive PG, des programmes de certificat avancés ou des programmes de maîtrise pour accélérer votre carrière.

Conclusion

Si vous souhaitez en savoir plus sur Django et d'autres langages et outils de développement full stack, consultez le programme Executive PG de upGrad & IIIT-B en développement de logiciels full-stack, conçu pour les professionnels et offrant plus de 500 heures de formation rigoureuse, Plus de 9 projets et affectations, statut d'ancien de l'IIIT-B, projets de synthèse pratiques et aide à l'emploi avec les meilleures entreprises.

Préparez-vous à une carrière d'avenir

Postulez maintenant pour une maîtrise en génie logiciel