Python论坛  - 讨论区

标题:[python-chinese] [django] signals怎么使用?

2007年05月25日 星期五 16:08

风向标 vaneoooo在gmail.com
星期五 五月 25 16:08:58 HKT 2007

ÎÒ¿´ÁËÏÂÏà¹ØµÄºÃ¼¸¸öÓ¢ÎÄ×ÊÁÏ£¬×î³£¼ûµÄÀý×ÓÊÇ£º

from django.dispatch import dispatcher
from django.db.models import signals
from myproj.myapp import models

def init_data():
    # Your initialisation code here
    pass

dispatcher.connect(init_data, sender=models, signal=signals.post_syncdb)

ÊÇÔÚÕâ¸ömodelsµÄsyncdbʱִÐÐinit_data()º¯Êýô£¿
»¹ÊÇ˵ִÐÐinit_data()µÄʱºòÖ´ÐÐmodelsµÄpost_syncdb???ÀàËÆmodels.syncdb()

»¹ÊÇÔõô£¿

»¹ÓÐһЩÀý×Ó£¬±ÈÈ磺

dispatcher.connect( increment_tag_summary , signal=signals.pre_save,
sender=TagUserObject )
dispatcher.connect( decrement_tag_summary , signal=signals.post_delete,
sender=TagUserObject )

ÎÒ»¹ÊDzúÉúÒÔÉÏÁ½ÖÖÀí½â¡£

´ËÍâÎÒ¿´µ½µÄÏà¹ØÎĵµ¶¼ÊÇsignalsµÄ£¬µ«ÊÇËûµÄʹÓôó¶àºÍdispatcher¹ØÁªÆðÀ´£¬Ò²ÕÒ²»µ½¹ØÓÚdispatcherµÄÏà¹Ø×ÊÁÏ
°üÀ¨dispathcher.connect . dispathcher.sendÕâЩ×÷ÓÃÊÇʲô£¿

ÆÚÍûÓÐÅóÓÑÄÜ°ïæ½â»ó£¬Ð»Ð»
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20070525/4cf74719/attachment.htm 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年05月25日 星期五 16:45

黄毅 yi.codeplayer在gmail.com
星期五 五月 25 16:45:45 HKT 2007

def init_data():
    # Your initialisation code here
    pass

dispatcher.connect(init_data, sender=models, signal=signals.post_syncdb)

是说 models 发送信号 post_syncdb  时(在 syncdb 时发送该信号)执行 init_data 。

On 5/25/07, 风向标 <vaneoooo at gmail.com> wrote:
>
> 我看了下相关的好几个英文资料,最常见的例子是:
>
> from django.dispatch import dispatcher
> from django.db.models import signals
> from myproj.myapp import models
>
> def init_data():
>     # Your initialisation code here
>     pass
>
> dispatcher.connect(init_data, sender=models, signal=signals.post_syncdb)
>
> 是在这个models的syncdb时执行init_data()函数么?
> 还是说执行init_data()的时候执行models的post_syncdb???类似models.syncdb()
>
> 还是怎么?
>
> 还有一些例子,比如:
>
> dispatcher.connect( increment_tag_summary , signal=signals.pre_save,
> sender=TagUserObject )
> dispatcher.connect( decrement_tag_summary , signal=signals.post_delete,
> sender=TagUserObject )
>
> 我还是产生以上两种理解。
>
> 此外我看到的相关文档都是signals的,但是他的使用大多和dispatcher关联起来,也找不到关于dispatcher的相关资料
> 包括dispathcher.connect . dispathcher.send这些作用是什么?
>
> 期望有朋友能帮忙解惑,谢谢
>
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>



-- 
http://codeplayer.blogspot.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://python.cn/pipermail/python-chinese/attachments/20070525/65c932da/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年05月25日 星期五 16:56

wyh wyhross在gmail.com
星期五 五月 25 16:56:47 HKT 2007

ÎÊÒ»ÏÂ,ÓÐûÓбȽϺõĹúÍâµÄPYTHONͨÐÅ×é???




wyh
2007-05-25



·¢¼þÈË£º »ÆÒã
·¢ËÍʱ¼ä£º 2007-05-25 16:47:36
ÊÕ¼þÈË£º python-chinese在lists.python.cn
³­ËÍ£º 
Ö÷Ì⣺ Re: [python-chinese][django] signalsÔõôʹÓã¿

def init_data():
    # Your initialisation code here 
    pass

dispatcher.connect(init_data, sender=models, signal=signals.post_syncdb)
 
ÊÇ˵ models ·¢ËÍÐźŠpost_syncdb  ʱ£¨ÔÚ syncdb ʱ·¢Ë͸ÃÐźţ©Ö´ÐÐ init_data ¡£
 
On 5/25/07, ·çÏò±ê <vaneoooo在gmail.com> wrote: 
ÎÒ¿´ÁËÏÂÏà¹ØµÄºÃ¼¸¸öÓ¢ÎÄ×ÊÁÏ£¬×î³£¼ûµÄÀý×ÓÊÇ£º

from django.dispatch import dispatcher
from django.db.models import signals
from myproj.myapp import models 

def init_data():
    # Your initialisation code here 
    pass

dispatcher.connect(init_data, sender=models, signal=signals.post_syncdb)


ÊÇÔÚÕâ¸ömodelsµÄsyncdbʱִÐÐinit_data()º¯Êýô£¿
»¹ÊÇ˵ִÐÐinit_data()µÄʱºòÖ´ÐÐmodelsµÄpost_syncdb???ÀàËÆmodels.syncdb()

»¹ÊÇÔõô£¿

»¹ÓÐһЩÀý×Ó£¬±ÈÈ磺

dispatcher.connect( increment_tag_summary , signal=signals.pre_save, sender=TagUserObject )
dispatcher.connect( decrement_tag_summary , signal=signals.post_delete, sender=TagUserObject ) 
 
ÎÒ»¹ÊDzúÉúÒÔÉÏÁ½ÖÖÀí½â¡£

´ËÍâÎÒ¿´µ½µÄÏà¹ØÎĵµ¶¼ÊÇsignalsµÄ£¬µ«ÊÇËûµÄʹÓôó¶àºÍdispatcher¹ØÁªÆðÀ´£¬Ò²ÕÒ²»µ½¹ØÓÚdispatcherµÄÏà¹Ø×ÊÁÏ
°üÀ¨dispathcher.connect . dispathcher.sendÕâЩ×÷ÓÃÊÇʲô£¿

ÆÚÍûÓÐÅóÓÑÄÜ°ïæ½â»ó£¬Ð»Ð»


_______________________________________________
python-chinese
Post: send python-chinese在lists.python.cn 
Subscribe: send subscribe to python-chinese-request在lists.python.cn
Unsubscribe: send unsubscribe to   python-chinese-request在lists.python.cn
Detail Info: http://python.cn/mailman/listinfo/python-chinese




-- 
http://codeplayer.blogspot.com/ 
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20070525/bd98c9ba/attachment.htm 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年05月25日 星期五 16:57

limodou limodou在gmail.com
星期五 五月 25 16:57:24 HKT 2007

signal包括信息发送,通过send()和绑定connect()。

首先是要先定义信息,在django中已经有一些预定义的信息

然后是对要处理的信息进么连接或绑定,这样当信息发出时就可以处理了。那么连接就是通过connect来处理,需要一个函数,同时还要给出想绑定哪个信息,和哪个发出者。有些参数可以缺省或进行通用匹配,如Any之类的表示任意的信息。sender如果不指明则表示不对发出者进行判断。因此一方面你可以根据信号进行过滤,另一方面可以根据发出者也就是哪个对象进行过滤。在许多时候,如果你指定了发出者为一个model类,那么表示只有这个model发出的信号才会接收。

再有就是发射信号。如果是使用django的预定义的信息,这些处理都是在django代码中已经实现的了,你要做的只是定义一个处理函数,然后进行绑定就可以了。

如果是自已写的一个新的信号处理,则上面三个内容都是要你来做的。

-- 
I like python!
UliPad <>: http://wiki.woodpecker.org.cn/moin/UliPad
My Blog: http://www.donews.net/limodou

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年05月25日 星期五 17:35

风向标 vaneoooo在gmail.com
星期五 五月 25 17:35:40 HKT 2007

»¹ÊDz»ºÜÀí½â

ÄÇsignalsµ½µ×ÊǸöÍêÈ«¶ÀÁ¢µÄ¶«Î÷£¬»¹ÊÇÒÀ¸½ÓÚmodelsÖ®ÉϵÄÄØ£¿

ÎÒ·´¸´ÔÚÎĵµÀï¿´µ½ËµÆ߸ösignals£¬ÕâÓÖÊÇʲôÒâ˼ÄØ£¿Ö»ÄÜÉèÖÃ7¸ösignals½Ó¿Ú£¿Ô½¿´Ô½ÃÔºý
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20070525/4a0dca89/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年05月25日 星期五 21:51

黄毅 yi.codeplayer在gmail.com
星期五 五月 25 21:51:03 HKT 2007

http://www.mercurytide.com/whitepapers/django-signals/
看看这篇就啥都明白了。

-- 
http://codeplayer.blogspot.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://python.cn/pipermail/python-chinese/attachments/20070525/c0ac72ea/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号