Django Signals
1.什么是signal? 在特定事件发生时, 使用signal 发送者 能够通知一系列 接收者(一个或者多个). python 本身没有类似机制的支持, 但是 django 基于 PyDispatcher 进行了性能 和代码结构上的优化来增加了signal功能.2.使用signal 2.1. 代码结构 ├── manage.py ├── signalapp │ ├── __init__.py │ ├── models.py │ ├── signals.py │ ├── tests.py │ ├── urls.py │ ├── views.py ├── signaltest │ ├── __init__.py │ ├── settings.py │ ├── urls.py │ ├── wsgi.py └── yann 2.2. 注册signal
import django.dispatch save_done = django.dispatch.Signal(providing_args=[‘obj‘])
2.3关联signal到对应的listener
fromDjango.dbImportModelsImportSignals#引入文件 class article(models. Model):title = models. Charfield (max_length= $) content = models. TextField () Is_public = models. Booleanfield (default=True, blank=True) def send(self):Signals.save_done.send (Sender=article, obj=self)#关联 sender=article, which restricts the event to be triggered only when article has an update. def __unicode__(self): returnSelf.title def chufa_func(sender, **kwargs): Print "SIGNAL" if "obj" inchKwargs:obj = Kwargs.get ("obj") Signals.save_done.connect (chufa_func,sender=article)
2.4触发监听事件
article = Article(title="", content="") article.send
Welcome to the Csdn-markdown Editor