Я новичок в django, и я не могу понять, как работать с сигналами django. Может ли кто-нибудь объяснить "сигналы джанго" с помощью простых примеров?
Спасибо заранее.
Я новичок в django, и я не могу понять, как работать с сигналами django. Может ли кто-нибудь объяснить "сигналы джанго" с помощью простых примеров?
Спасибо заранее.
Вы можете найти очень хорошее содержание о сигналах django через Интернет, сделав очень маленькие исследования.
Здесь я расскажу вам очень кратко о сигналах Django.
Что такое сигналы Django?
Сигналы позволяют некоторым отправителям уведомить набор приемников о том, что некоторые действия были выполнены
Действия:
метод сохранения модели() вызывается.
django.db.models.signals.pre_save | post_save
model delete().
django.db.models.signals.pre_delete | post_delete
Изменено ManyToManyField на модели.
django.db.models.signals.m2m_changed
Django запускает или завершает HTTP-запрос.
django.core.signals.request_started | request_finished
Все сигналы представляют собой экземпляры 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
Помимо объяснения, данного Prashant, вы также можете использовать декоратор приемника, присутствующий в модуле django.dispatch.
например.
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"
Для получения дополнительной информации см. ссылку ниже: - https://simpleisbetterthancomplex.com/tutorial/2016/07/28/how-to-create-django-signals.html