Sono nuovo del django e non sono in grado di capire come lavorare con i segnali di Django. Qualcuno può spiegare "segnali django" con semplici esempi?Django - segnali. Semplici esempi per iniziare
Grazie in anticipo ..
Sono nuovo del django e non sono in grado di capire come lavorare con i segnali di Django. Qualcuno può spiegare "segnali django" con semplici esempi?Django - segnali. Semplici esempi per iniziare
Grazie in anticipo ..
Potete trovare molto buoni contenuti sui segnali Django su internet facendo molto piccola ricerca.
Qui vi spiegherò molto brevemente sui segnali di Django.
Quali sono i segnali di Django?
segnali permettono determinati mittenti di notificare una serie di ricevitori che una certa azione ha avuto luogo
azioni: metodo Save()
del modello si chiama.
django.db.models.signals.pre_save | post_save
Il metodo delete() viene chiamato.
django.db.models.signals.pre_delete | post_delete
ManyToManyField su un modello è stato modificato.
django.db.models.signals.m2m_changed
Django inizia o finisce una richiesta HTTP.
django.core.signals.request_started | request_finished
Tutti i segnali sono istanze 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(create_customer, sender=Customer)
Shell
In [1]: obj = Customer(name='foo', description='foo in detail')
In [2]: obj.save()
Save is called
A parte la spiegazione data dal Prashant, è anche possibile utilizzare ricevitore decoratore presente in modulo django.dispatch.
es.
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"
Per ulteriori informazioni, vedere link qui di seguito: - https://simpleisbetterthancomplex.com/tutorial/2016/07/28/how-to-create-django-signals.html
Può essere più preciso? Il manuale ha già alcuni esempi: https://docs.djangoproject.com/en/1.7/topics/signals/ – Wolph