Le signal sous Django est un mécanisme permettant d'avertir une autre partie de l'application qu'un évènement vient de se produire. Le signal correspond à l'émetteur et le destinataire est l'action à réaliser face à cet évènement.
Voici la liste des signaux prédéfinis par Django. Il en existe plusieurs types, nous allons voir un exemple sur l'authentification.
Il faut placer le décorateur @receiver au-dessus de la fonction à appeler avec en paramètre le signal de django, comme le montre le fichier signals.py
Copier le code
1 2 3 4 5 6 7 from django.contrib.auth.signals import user_logged_in from django.dispatch import receiver import logging @receiver(user_logged_in) def post_login(sender, request, user, **kwargs): logging.getLogger().info(f'Connextion {user}')
Cette fonction sera appelée après que l'utilisateur se soit connecté via le formulaire de Django pour lancer l'action associée.
Et ne pas oublier d'ajouter le signal dans le fichier app.py
Copier le code
1 2 3 4 5 6 7 from django.apps import AppConfig class MyConfig(AppConfig): name = 'myApp' def ready(self): import my_app.signals
C'est tout ! Très pratique et simple à mettre en place
Il est également possible de fournir des signaux personnalisés, nous le verrons dans un prochain article.