Je suis nouveau sur Django et je ne suis pas en mesure de comprendre comment travailler avec les signaux Django. Quelqu'un peut-il expliquer "signaux Django "avec des exemples simples?
Merci d'avance.
Vous pouvez trouver un très bon contenu sur les signaux Django sur Internet en faisant de très petites recherches.
Ici, je vais vous expliquer très brièvement les signaux Django.
Que sont Django signaux?
Les signaux permettent à certains expéditeurs d'informer un ensemble de destinataires qu'une action a eu lieu
Actions :
la méthode save () du modèle est appelée.
Django.db.models.signals.pre_save | post_save
la méthode delete () du modèle est appelée.
Django.db.models.signals.pre_delete | post_delete
ManyToManyField sur un modèle est modifié.
Django.db.models.signals.m2m_changed
Django démarre ou termine une requête HTTP.
Django.core.signals.request_started | request_finished
Tous les signaux sont des instances Django.dispatch.Signal.
models.py
from Django.db import models
from Django.db.models import signals
def create_customer(sender, instance, created, **kwargs):
print "Save is called"
class Customer(models.Model):
name = models.CharField(max_length=16)
description = models.CharField(max_length=32)
signals.post_save.connect(receiver=create_customer, sender=Customer)
Shell
In [1]: obj = Customer(name='foo', description='foo in detail')
In [2]: obj.save()
Save is called
Outre l'explication donnée par Prashant, vous pouvez également utiliser récepteur décorateur présent dans Django.dispatch
module.
par exemple.
from Django.db import models
from Django.db.models import signals
from Django.dispatch import receiver
class Customer(models.Model):
name = models.CharField(max_length=16)
description = models.CharField(max_length=32)
@receiver(signals.pre_save, sender=Customer)
def create_customer(sender, instance, created, **kwargs):
print "customer created"
Pour plus d'informations, reportez-vous à cette lien .