码迷,mamicode.com
首页 > 其他好文 > 详细

欢迎使用CSDN-markdown编辑器

时间:2015-05-09 17:37:35      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:django   python   signal   

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
    from django.db import models
    import signals  #引入文件
    class Article(models.Model):
        title = models.CharField(max_length=200)
        content = models.TextField()
        is_public = models.BooleanField(default=True, blank=True)

        def send(self):
            signals.save_done.send(sender=Article, obj=self) #关联  sender=Article, 用来限制只有当Article有更新时我们才会触发这个事件.  

        def __unicode__(self):
            return self.title

    def chufa_Func(sender, **kwargs):
            print "SIGNAL"
            if "obj" in kwargs:
                obj = kwargs.get("obj")

    signals.save_done.connect(chufa_Func,sender=Article)
   2.4触发监听事件
    article = Article(title="", content="")
      article.send() 

欢迎使用CSDN-markdown编辑器

标签:django   python   signal   

原文地址:http://blog.csdn.net/dale_dede/article/details/45602215

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!